Pic 16f84 Mikrodenetleyici

September 17, 2017 | Author: Ünal Vuruş | Category: N/A
Share Embed Donate


Short Description

PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI...

Description

PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI

Sunuş Kişisel bilgisayarları kullandığımızda genellikle onun donanımı hakkında fazlaca düşünmeyiz. Sadece kullanma yöntemlerini öğrenmeye çalışırız. Çünkü bilgisayarlarla interneti kullanmayı veya word, excel, powerpoint programları bizler için daha önem taşırlar. Biz burada mikrodenetleyicileri daha sonra öğrenmeye çalışacağız. Mikrodenetleyicileri anlayıp öğrenebilmek için aşağıdaki basamakları takip etmemiz gerekmektedir. (1) İfade değerinin şekli ( Binary sayı, Hexadecimal sayı, Decimal sayı ) (2) Mikrodenetleyicileri kullanabilmek için Assembler dili (3) Elektronik malzemeler ve karakteristikleri hakkında bilgi ( IC, LED, diyot, direnç, transistör, vb.) Endüstriyel matematik dersinde bu sayısal değerlerin ve bunların birbirlerine dönüşümleri ile çarpma, toplama, bölme ve çıkarma gibi işlemlerin nasıl olduğunu öğrendik. Bu ders kitabında bu değerleri kullanmayı dahada ileri seviyelere ulaştıracağız. Assembler dili mikrodenetleyici programları için kullanılmaktadır. Ancak assembler dili oldukça zor olmasına rağmen temel oluşturduğundan dolayı pek çok insan tarafından kullanılmaktadır. Çünkü assembler dilini kullanabilmek için donanım bilgisine ihtiyaç vardır. Makine dilini anlayabilirsek bu mikrodenetleyici dilini anlayabiliriz. Assembler dili makine diline benzerlik gösterir. Bu dilde sık sık register, adres, byte, flag, vb. gibi terimler kullanmaktayız. Üstelik program hatasız olmalı ve sonunda derlememiz gerekmektedir. Bu program dili fazla esnek değildir. Program yazarken mikrodenetleyici işlemcisinin data bilgilerini kullanırız. Bu nedenle hata yapmamamız gerekir. Assembler dilinde bir program yazacağımızda komutlarının görevlerini iyi anlamamız gerekmektedir. Assembler veya makine dilinin bu kadar zor ve dikkat edilmesi gereken bir programlama yöntemi olmasına rağmen neden bu dil günümüzde de tercih edilmekte olduğunu aşağıdaki maddelerle sıralayabiliriz.. (1) İşlem hızı çok hızlıdır. (2) Assembler dili fazla hafıza kullanmaz. (3) Makine dili ile direk bağlantılı olduğundan kontrol için uygundur. Mikrodenetleyici teknolojisi aracılığı ile PIC in Assembler dilini

öğreneceğiz. Her

nekadar PIC programlama gelecekte C dili ile kontrol edilip yazılsada assembler dili temel bilgi olarak çok önem taşımaktadır. Bununla birlikte elektronik parçaların özelliklerini ve çalışma prensiplerini eğitim setiyle daha iyi öğrenmiş olacağız. Buna sensörlerde dahil olmaktadır. Mikrodenetleyici teknolojisini Otomasyon teknolojisine geçişte bir adım olarak kullanmaktayız.

PIC mikrodenetleyicileri

PIC mikrodenetleyici eğitim seti

PIC çizgi takip eden robot

İÇİNDEKİLER Bölüm 1 Mikrodenetleyicinin temeli 1

Mikrodenetleyici (1) Bilgisayarın temel donanımı (2) Mikrodenetleyici işletimi (3) Hafızası ve fonksiyonları

2

3

PIC mikrodenetleyici

(1) PIC in yapısı (2) PIC çeşitleri (3) PIC in yapısı (4) PIC programının geliştirilmesi

Bölüm 2 PIC yazıcısı ve eğitim seti yapmak

5 6 6 7

9 10 11 11

13 - 25

Elektronik elemanların anlatımı (1) Transistör (2) LED ( light emitting diode )( Işık yayan diyot ) (3) Diyot ( anahtar diyot ) (4) Seri regülatör ( Gerilim düzenleyici ) (5) Kristal osilatör (6) Transistor düzeni ( ULN2803 )

2

2 3 3

Sayıların ifadesi (1) Sayıların tipi (2) Binary dijit nedir? (3) Hexedesimal dijit nedir? (4) Binary, desimal, hexedesimal sayıların dönüşümleri

1

1 - 11

14 15 15 16 17 17

PIC eğitim setinin yapılışı (1) Elektronik devre üzerinde deliklerin delinmesi (2) Alt taban ( Şeffaf ) deliklerinin açılması (3) Lehimleme yöntemi (4) Elektronik parça elemanlarının yerleştirilmesi (5) PIC yazıcısının devre diagramı (6) PIC yazıcı parçalarının düzenini gösteren şema (7) PIC eğitim seti devre diyagramı (8) PIC eğitim seti parça düzeni şeması (9) Parça listesi (10) Bağlama aparatının yapımı (11) Bilgisayar bağlantı kablosunun yapımı

18 19 19 20 21 21 22 22 23 24 25

Bölüm 3 PIC’in yapısı 1 PIC16F84

(1) PIC16F84 (2) PIC16F84’ ün yapısı (3) Clock düzeni / Komut süresi (4) Komut akışı / Bilgi iletim kanalı (5) W yazmacı ( register ) (6) Program belleği ( memory )

2 Veri belleği ( DATA memory )

(1) Veri belleği (2) Yığın hafıza ( Stack Memory ) (3) Program sayıcı ( Program counter ) (4) STATUS Yazmacı ( Register )

26 - 39 26 27 28 28 29 30

31 32 32 33

3 I / O port ( input / output ) (1) Giriş İşlemi (2) Çıkış işlemi

4 Reset Devresi

(1) Resetleme İşlemi ( Power on Reset ) ( POR ) (2) Butonla Reset

34 35

36 37

5 Osilatör özellikleri (1) osilatör modelleri (2) Kristal / seramik resonator işlemi (3) RC Osilatör

Bölüm 4 PIC Programlamının temeli

38 38 39

40 - 124

1 MPLAB (MPASM) ‘ı nasıl Kullanırız ? (1) Basit bir program (2) Sayıların ifade edilmesi (3) Programın temel ifade şekli (4) Program yazmanın yöntemi (5) MPLAB nasıl kullanılır ? (6) MPASM

40 40 41 42 43 56

2 PIC yazıcı setini nasıl kullanırız ? (1) PIC yazıcının ( writer ) kullanılması (2) Bağlantısı kablosunu PC’ye bağlayınız. (3) PICWW ( PIC yazıcı programı ) nasıl kullanılır ? (4) Bu programın sonuç ifadesi

3 Programın açıklanması

(1) Program Listesi ve akış diyagramı (2) Yöntem şartnamesi ( Specification of processor ) (3) Port’un kurulumu

57 57 58 65

66 67 68

(4) LED‘lerin yakılması Alıştırma 4-1 Alıştırma 4-2

4 İki veya daha fazla LED‘ in yakılması (1) Program 4-1 (2) Include dosyası (3) MOV komutu Alıştırma 4-2 Alıştırma 4-3

71 72 72

73 73 75 76 76

5 Timer Programı (DECFSZ) (1) Zamanlayıcı ( timer ) program Alıştırma 4-4 (2) Program 4-2 Alıştırma 4-5 Alıştırma 4-6

77 80 81 83 83

6 LED lerin ardışık olarak yanması ( Dönüş uygulaması ) (1) Dönüş programı 1 1) Dönüş uygulaması 2) Program 4-3 3) Akış diyagramı Alıştırma 4-7 (2) Dönüş programı 2 1) BTFSC komutun uygulaması 2) Program 4-4 3) Akış diyagramı Alıştırma 4-8 Alıştırma 4-9

84 85 86 86 87 88 89 90 90

7 İncrement and decrement uygulaması ( INC , DEC ) (1) Program 4-5 1) Akış diyagramı 2) Program yazılışı Alıştırma 4-10

8 Anahtarlama arabirimi

(1) Anahtarlama devresi (2) Programın açıklanması (3) Program 4-6 (4) Akış diyagramı Alıştırma 4-11 Alıştırma 4-12

9 RETLW komutunun uygulaması (1) Retlw işlem sırası (2) Program 4-7 Alıştırma 4-13

91 92 92

93 93 94 95 95 96

97 97 98

10 Buton arabirimi 2

(1) chattering (2) Alıcı ile buton uygulaması 1) Klasik tip buton devresi 2) Kondansatörlü buton devresi 3) Schmidt Trigger ters çeviricili devre Alıştırma 4-14 (1) Alıştırmanın açıklanması (2) Alıştırma 4-14 ( akış diyagramı ) (3) Buton uygulama devresi (4) Buton uygulama devresinin üstten görünüşü (5) Deneyin sonucu

100 100 100 101 101 102 103 103 104

11 Uygulanabilir buton programı (1) Uygulanabilir buton programında izlenecek yol Alıştırma 4-15

105 106

12 Mantıksal işlemler (AND,OR,XOR) (1) AND işlemi 1) ANDLW 2) ANDWF 3) Program 4-8 4) Akış diyagramı 5) Program 4-8 listesi (2) IOR işlevi 1) IORLW 2) IORWF 3) Program 4-9 4) Akış diyagramı 5) Program 4-9 listesi (3) XOR işlevi 1) XORLW 2) XORWF 3) Program 4-10 4) Akış diyagramı 5) Program 4-10 listesi Alıştırma 4-16

107 107 108 108 109 110 110 111 111 112 113 113 114 114 115 115

13 Aritmetik komutlar ( ADD , SUB komutları) (1) ADD komutları 1) Program 4-11 2) Akış diyagramı 3) Program 4-11 listesi Alıştırma 4-17 Alıştırma 4-18 (2) İki bit bilginin toplanması 1) Düşünme yöntemi 2) Akış diyagramı 3) Program 4-12 listesi (3) Çıkartma komutları 1) SUBLW

116 116 117 117 117 118 118 120 121

2) SUBWF 3) Çıkarma yöntemi 4) Program 4-13 5) Program 4-13 listesi Alıştırma 4-19 Alıştırma 4-20 6) SUB komutunu çeşitli şekillerde karşılaştırması Alıştırma 4-21

Bölüm 5 PIC Program Uygulamaları 1 Yedi Segment kod çözücü ( Segment decoder ) (1) Yedi segment kod çözücüler (2) Programın planlanması (3) Yedi segment programın akış diyagramı (4) Programın yapılması ve uygulanması

2 Röle kontrol (Relay control ) (1) Mekanik röle 1) Röle deney devresi 2) İletken bağlantısı 3) Program yapımı Alıştırma 5-1, 5-2, 5-3 (2) SSR ( Solid State Relay ) 1) SSR 2) İletken bağlantısı 3) Program yapımı Alıştırma 5-4, 5-5, 5-6, 5-7

121 122 122 123 123 123 124 124

125 125 - 129 125 126 128 129

130 - 135 130 131 132 133 133 134 134 135 135

3 İşlemsel Yükselteçler (“Operational amplifier” Op-amp) 136 - 147 (1) İşlemsel yükselteçler (2) Tersleyen yükselteç devresi (3) Tersleyen yükselteç devresi 1) Tersleyen yükseltecin yükseltme faktörü 2) Tersleyen yükselteç devresine uygulama (4) Terslemeyen yükselteç devresi 1) Terslemeyen yükselteçlerin yükseltme faktörü 2) Terslemeyen yükselteç devresine uygulama (5) Karşılaştırıcı ( Comparator ) olarak kullanılması 1) Karşılaştırıcı 2) Karşılaştırıcı uygulaması Alıştırma 5-8 Alıştırma 5-9 (6) Voltaj takip devresi

4 DA konvertör

(1) DA konvertör prensibi Alıştırma 5-10, 5-11 (2) DENEY 1 1) DA konverterin çıkışı 2) DA konvertörün deneyi (3) Testere dişli dalga yapımı

136 137

137 138 141 141 144 144 146 147 147

148 - 156

148 149 150 150 154

Alıştırma 5-12

5 AD konvertör (1) AD konvertör prensibi (2) AD konvertör tipinin ardarda tahmin prensibi (3) Program yapımı Alıştırma 5-13, 5-14

6 Seri iletişim (RS-232C) (1) Bilgi iletişiminin ana hatları 1) Bilgi iletişim sistemi 2) Transmisyon sinyal sistemi 3) RS232C 4) Seri komünikasyonun formatı 5) Seri komünikasyon uygulama devresi (2) Seri komünikasyon programı 1 1) Program 1 2) Program mantığı 3) Programın akış diyagramı 4) Program1 örneği 5) Teraterm programını nasıl kullanırız ? 6) Programın uygulanması Alıştırma 5-15 (3) Seri komünikasyon programı 2 1) Program 2 hakkında 2) Program mantığı 3) Program2 örneği 4) Program uygulaması Alıştırma 5-16, 5-17, 5-18

7 Step Motor kontrolü

156

157 - 163 157 159 161 163

164 - 182 164 164 165 165 166 168 169 170 170 172 173 175 175 176 176 176 180 181-182

183 - 197

(1) Step motorlar hakkında genel bilgiler 1) Her adımın derecesi 183 2) Uçlarının tesbiti 184 3) Step motorların temel özellikleri 184 4) Çalışma prensibi 185 5) Unipolar Step motor ( 1 fazlı sürme metodu ) 186 6) Unipolar Step motorun 2 fazlı olarak sürülmesi 187 7) Unipolar Step motorların 1-2 fazlı olarak sürülmesi 188 (2) Step motor uygulaması1 1) Step motor uygulama devresi 189 2) Step motorun programı 191 3) Programın akış diyagramı 191 4) Program listesi 192 Alıştırma 5-19, 5-20, 5-21, 5-22 194 (3) Step motor uygulaması 2 ( Pozisyon kotrol ) 1) Foto interrupter 195 2) Program 195 3) Programın akış diyagramı ( Alıştırma 5-23 ) 196

8 DA motor kontrolü (1) DA motorları hakkında genel bilgi 1) Transistör ve FET ile DA motor kontrolü yapabiliriz. 2) H köprü devresi 3) Motor sürücü 4) DA motorlarında hız kontrolü (a) Gerilim kontrolü (b) PWM kontrol (Faz genişlik kontrollü ) 5) DA motor ders eğitim setinin devre şeması (2) Eğitim malzemesi 1) Motor eğitim malzemesi 2) DA motor eğitim seti (3) DA motor programı 1) Program1 ( FET ile ) ( Uygulama 5-24 ) 2) Program2 ( TA7257 ile ) ( Uygulama 5-25 ) 3) Program 3 ( PWM programı ) (a) PWM Dalgası ( PB1 ) (b) PWM dalgasını nasıl oluşturuz. (c) Program3’ün akış diyagramı (d) Program3 listesi (e) Program3’ün uygulama sonucu Uygulama 5-26 Uygulama 5-27

9 Kesme ( İnterrupt )

(1) Kesme 1) Kesme kavramı 2) TMR0 kesme 3) Dış kesme RB0/INT ucu (2) INTCON Yazmacı ( register ) ( Adres 0Bh,8Bh ) (3) OPTION_REG REGISTER ( ADRES 81h ) (4) RB0/INT kesme 1) RB0/INT kesme programı 2) programın akış diyagramı 3) RB0 / INT kesmesi için program Uygulama 5-28 Uygulama 5-29 (5) TMR0 (Timer0 zaman aşımı kesme) 1) Timer0 zaman aşımı kesme hakkında 2) Zaman aşımı frekans nasıl elde edilir ? 3) Interval zamanlayıcı ( timer ) (6) Timer0 program1 1) Akış diyagramı 2) Timer0 program1 (7) Timer0 program2 ( TMR0’ın Initial değeri setleme ) 1) Timer0 program2 Uygulama 5-30, 5-31

198 - 211 198 199 199 200 201 202 203 203 204 204 205 205 205 206 207 209 210 211

212 - 232 212 213 213 214 215 217 218 219 221 222 223 225 226 227 228 230 232

10 Çizgi takip eden Robot ( Line trace robot control )

233 - 247

(1) Çizgi takip eden robot anlatımı 1) Çizgi sensörü 233 2) Foto transistor uygulaması 235 3) Foto IC ( Hamamatsu S7136 ) 238 (2) Çizgi takip eden robot 1) Çizgi takip eden robot devre şeması 239 2) Çizgi takip eden robotun programı 240 (a) Çizgi takip eden robotun temel çalışma prensibi a) PIC ucu ( PORT ) 240 b) TA7257P ( Toshiba ) 240 c) Temel program 1 ( İleri hareket ) 241 d) Temel program 2 243 3) Çizgi takip eden program 1 ( Uygulama 5-33 ) 244 4) Program 1 ‘in akış diyagramı 245 Uygulama 5-34 246

11 Müzik programı

247 - 251

(1) Müzik programı (2) Müzik programı 1) Program çerçevesi 2) Program listesi Uygulama 5-35 (3) Müzik program Uygulama 5-36

247 248 249 250 250 250

PIC komutlarının açıklanması Include dosyalar Bilgi sayfaları Öğrenim seti

251 - 286 287 - 291 292 - 309 310

Eki

Mikrodenetleyicinin temelleri

Bölüm 1

Mikrodenetleyicinin temeli

İlk mikrodenetleyici seti (NEC TK-85)

Mikrodenetleyici chipleri

1

Mikrodenetleyicinin temelleri 1 Mikrodenetleyici Mikrodenetleyici

gerçekte

küçük

bir

bilgisayardır.

Çevremizde

o

kadar

çok

mikrodenetleyici kontrollü elektronik cihaz vardır ki bunlara örnek televizyon, radyo, fax-modem, oyuncaklarda, VCR, kamera vb. verebiliriz. Bunları aşağıda ( Şekil 1-1 ) de görmektesiniz.

micro

computer

Şekil 1-1

Çevremizde kullanılan aktif Microdenetleyici örnekleri

(1) Bilgisayarın temel donanımı Bütün bilgisayarlar verilen programla çalışmaktadır. Buna sistem programının kayıt edilmesi denir. Genel mikrodenetleyici sistemleri şekil 1-2 de görülmektedir. Bu mikrodenetleyiciler CPU ( Merkezi işlem birimi ) , ROM ( Sadece okunabilen bellek ), RAM ( Rastgele erişilebilen bellek ) ve LSI ( Arabirim ) den oluşmaktadır.

Adress BUS

Clock

Interface CPU

input/output

LSI RAM

ROM

Data BUS

Şekil 1-2 Genel mikrodenetleyici sistemleri

2

Mikrodenetleyicinin temelleri 8-bitlik bir mikrodenetleyici dizayn etmek istediğimizde ilkönce CPU seçmemiz gerekmektedir. Günümüzde popüler CPU lar i8085(Intel), Z80, M6809(Motorola) dır. En popüleri Z80dir. sahip

Z80 i8085’ in tüm özelliklerini kullanmakta bu nedenle çok sayıda komuta

olmaktadır.

Ancak

mikrodenetleyicilar

sadece

CPU

ile

çalışmamaktadır.

Mikrodenetleyici sistemlerinin oluşabilmesi için I/O ( Giriş Çıkış ) birimlerinin yanı sıra adres tanımlama devresine ( burada RAM ve ROM bellek adreslerini ve arabirimi seçebiliriz ), işlem hızını sağlayan clock devresine ve bulunmaktadır

LSI ( 8255,Z-80PIO ) arabirimine ihtiyaç

Bu nedenle LSI ve bellek mutlaka mikrodenetleyici sistemleri için

gereklidir. (2) Mikrodenetleyici işletimi Mikrodenetleyiciler üç birimi sürekli tekrar ederler. a)

Fetch

Hafızaya yüklenmiş olan program komutlarını alır. b)

Decode

Alma ( Fetch )

Kod çözme ( Decode )

Yazmaçtaki komutları kod çözücü ( decoder ) yardımıyla çözer.

Execution

c)

Uygulama ( Execution )

Çözülen komutları uygular ve bu işlemi sürekli tekrar eder. Şekil 1-3 Mikrodenetleyici devresi (3) Hafızası ve fonksiyonları Mikrodenetleyicinin ana hafızası olarak genellikle IC hafıza ( RAM or ROM ) kullanmaktadır. a) ROM (Sadece okunabilir bellek) ROM sadece dış verileri okumak üzere tasarlanmıştır, CPU ve IC ile buna veri yazılımı gerçekleştirilemez. Bilgileri üzerinde düzenli bir şekilde saklamaya yarar ve elektrik kaynağı kesilse bile üzerindeki bilgiler silinmez, ROM bellek içeriği kalıcı olarak saklanır ROM üç ana çeşitten oluşmaktadır. 3

Mikrodenetleyicinin temelleri ● Mask ROM IC işleminin içeriğini düzenleyebildiğimiz bellek çeşididir. Yeniden yazılması mümkün değildir. ● PROM (Programlanabilir ROM) Kullanıcı tarafından yazılabilen bellektir. Yeniden yazılması mümkün değildir ● EPROM (Silinebilir PROM) Kullanıcı tarafından tekrar tekrar yazılabilmekte veya silinebilmektedir. b) RAM ( Rastgele erişilebilen bellek ) RAM kullanıcıların belleği özgürce okuyup yazabilmesi için bir IC belleğidir. Fakat elektrik kaynağı kesildiğinde bütün bilgiler bellekten silinir. Bu nedenle RAM aritmetik işlemlerin sonucunu geçici süreler içerisinde bellekte depolama işlemine yarar

ROM

Mask ROM

Üretim işleminde yazılmıştır,

PROM

PROM yazıcısı ile yazılmıştır silinemez.

UV-EPROM

PROM yazıcısı ile yazılmıştır ultraviole ışınları ile silinebilir.

EEPROM

PROM

yazıcısı

ile

içerikler silinemez.

yazılmıştır,

elektrik

silinebilir.

RAM

Statik RAM

Kullanışı basit ve kolaydır ancak pahalıdır.

Dinamik RAM

Kullanışı zordur ancak pahalı değildir.

Tablo 1-1

Bellek Çeşitleri

4

sinyalleri

ile

Mikrodenetleyicinin temelleri 2

PIC mikrodenetleyici

(1) PIC’ in yapısı PIC Mikrodenetleyici İngilizce ( Peripheral Interface Controller ) kelimesinin başharflerinden oluşmaktadır. Anlamı ise dış üniteleri denetleyen arabirimdir. Bunun aracılığı ile çeşitli alıcıları ( lamba, role, motor vb. ) kolaylıkla kontrol edebiliriz.

ROM CPU

I / O port

RAM

PIC

Şekil 1-4

PIC paketi

PIC mikrodenetleyici bir entegre şeklinde olup I/O giriş ve çıkış kontrollerini çok kolay ve hızlı bir şekilde yapabilmekteyiz Bu nedenle robot gibi ufak sistemleri kontrol edebiliriz. PIC mikrodenetleyici aşağıdaki özelliklere sahiptir. (a) Komut sayısı diğer CPU lardan daha azdır. PIC ler RISC( Reduced Instruction Set Computer ) denilen bir sistem mantığı ile üretildiklerinden komut sayıları azdır ( sedece 35 Adet ) ve basittir. Bunun yanısıra Z-80 CPU da 158 adet komut sayısı mevcuttur. (b) Küçük gerilim altında işlem yapmak mümkündür. PIC ler piyasada bulunan kuru pil olarak tabir ettiğimiz bataryalarla çalışabilmektedir. Çünkü çalışma gerilimleri 2 ila 6 Volt arasındadır. (c) Çıkış pininden yüksek akım alınabilir. PIC’ in uçlarına direk olarak LED sürebiliriz çünkü PIC yaklaşık 20mA çıkışı güvenli bir şekilde sağlayabilir. (d) Fiyatı oldukça ucuzdur. PIC16F84 normal bir PIC mikrodenetleyici olup CPU lardan çok daha ucuza satın alabiliriz.

Şekil 1-5

PIC16F84 ve diğer PIC’ ler. 5

Mikrodenetleyicinin temelleri (2) PIC çeşitleri PIC yaklaşık 3 ayrı katagoride inceleyebiliriz. 1) Düşük seri 12 Bit kelime boyuna sahip eski kuşak PIC’ lerdir. ( model numarası: 12C5xx,16C5x ) 2) Orta seri 14 Bit kelime boyuna sahip PIC’ lerdir. Bu seri oldukça kullanışlı ve tercih edilen bir seridir. Analoğu digitale çeviren ve seri porta sahip PIC tir. Aşağıdaki PIC ler bu serinin elemanlarıdır. ( model numarası:12C6xx,16C55x,16C62x,16C6xx,16C7xx,16F8xx,16C92x ) 3) Yüksek son seri 16 Bit kelime boyuna sahip PIC’lerdir. Yüksek performanslı olan bu PIC lerin kullanımı zordur. ( model numarası:17Cxxx,18Cxxx )

PIC çeşitleri İsmi

bilgi biti Hafıza kapasitesi Hafıza tipi

A/D

I/O port

paketi

PIC16C54

12

0.5

E

12

18P DIP

PIC16C56

12

1

E

12

18P DIP

PIC16C57

12

2

E

20

28P DIP

PIC16C64A

14

2

E

33

40P DIP

PIC16C71

14

1

E

4CH

13

18P DIP

PIC16C74

14

4

E

8CH

33

40P DIP

PIC16F84

14

1

EE

13

18P DIP

PIC16F873

14

4

EE

5CH

22

28P DIP

PIC16F874

14

4

EE

8CH

33

40P DIP

PIC16F877

14

8

EE

8CH

33

40P DIP

* Hafıza tipi

E: EPROM EE:EEPRPM U:UVEPROM Tablo 1-2 Orta seri PIC çeşitleri

(3) PIC in yapısı Genel mikrodenetleyicilerin yapısı 'Von Neumann mimarisi ' olarak adlandırılır. Bilgi çıkışları birlikte bir hafızadadır ve ALU bir data bus ile hafıza ( memories ) arasındadır. ( Şekil 1-6 )

Alışılagelmiş mikrodenetleyiciler bu 'Von Neumann ‘ mimarisindedir.

( bus:

Sinyal hattı bus olarak adlandırılır. Örneğin 8 bitlik bilgisayar data bus 8 sinyal hattına sahiptir. )

6

Mikrodenetleyicinin temelleri DATA bus main peripheral

memory

circuit instruction decode & control

peripheral circuit

register

ALU:Arithmetic Logic

ALU

Unit

Şekil 1-6

Von Neumann mimarisi

PIC Harvard mimarisine sahiptir ve data hafızası ile program hafızası vardır. (Şekil 1-7)

Data hafızası bilgi yoluna ( bus ), program hafızası ise program yoluna ( bus ) sahiptir.

Bu iki yol ( bus ) birbirlerinden tamamen bağımsızdırlar. İç yapısı basittir ve işletimi hızlıdır. Program hafızası bağımsız olduğundan dolayı kapladığı alanda bağımsızdır. Ve bu tanımlar birtek kelimeylede ifade edilebilir. DATA bus

Program bus

peripheral

Program Memory

circuit

instruction decode & control

DATA memory

register

ALU

Şekil 1-7

Harvard mimarisi

(4) PIC programının geliştirilmesi PIC programının geliştirilmesi Şekil 1 – 8 gösterilmiştir. 1) Kişisel bilgisayar OS(operating system)( işletim sistemi ): Windows 95,98,Me Specification ( Özellikleri ): Pentium 75MHz ve üstü, paralel port , seri port 2) PIC programlama yazılımı (MPLAB - IDE) MPLAB PIC’ i programlamak için windows altında çalışan bir yardımcı yazılımdır. MPLAB IDE (Integrated Development Environment) olarak da adlandırılır. 7

Microchip Technology

Mikrodenetleyicinin temelleri Co. (United States) firması tarafından geliştirilmiştir Bu program internetten ücretsiz indirilebilir. Web adresi http://www.microchip.com 3) PIC’e windows da yazdırma programı ( Ic – prog ) PIC’ e programı yazdırmak için özel bir elektronik devreye ihtiyaç vardır. Bu devreyle PIC’ e program yazdırma işlemini ic - prog yazılımı gerçekleştirir. Bu program internetten ücretsiz indirilebilir. Web adresi http://www.ic-prog.com Programı ilk defa çalıştırılacağında bazı ayarları yapmanız gerekmektedir. Bu ayarlar Bölüm 4’ de açıklanmıştır. 4) PIC yazıcı ve PIC Eğitim seti PIC yazıcısı elektronik bir devre olup PIC’ e yazılmış programı yükleme işine yarar. PIC eğitim seti ise yazılan programın doğru olup olmadığını kontrol etmek için yapılmış elektronik bir devredir.

MPLAB Kaynak dosya * * Derleme * HEX Dosya

Windows için PIC yaz ıcı

* Program Yazımı Yük lem

e

MPLAB

Windows için PIC yazıcı PIC YAZICI PIC Eğitim seti Şekil 1-8

PIC programının geliştirilmesi

8

Mikrodenetleyicinin temelleri 3 Sayıların ifadesi (1) Sayıların tipi Microdenetleyiciler binary, decimal ve hexedesimal sayı sistemlerini kullanırlar. Binary sayı sistemi mikrodenetleyicilerin anlayabildiği bir sayı kod sistemidir. Desimal sayı sistemi bize yabancı olmayan bir sayı sistemidir. Hexedesimal sayı sistemi ise bizim binary sayı sistemimizi kolayca anlamamıza yardımcı olan bir sistemdir. Bunun yanısıra kullanıcının ( programlayıcının ) bu üç sayı sistemi arasındaki ilişkiyi çok iyği bilmesi gerekir ve bunlar arasında dönüştürmeleri kolayca yapabilme bilgisine sahip olmaları gerekmektedir.

Desimal sayılar

Binary sayılar

Hexadecimal sayılar

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

Tablo 1-3 Desimal, binary ve hexedesimal karşılıkları tablosu Binary ve decimal sayı sitemlerini öğrendikten sonra bunların birbirlerine dönüşüm metodlarını öğrenmemiz gerekmektedir.

9

Mikrodenetleyicinin temelleri dijital

maksimum

kısaltma

dijital sayı

maksimum

kısaltma

sayı 1

2

17

131072

128K

2

4

18

262144

256K

3

8

19

524288

512K

4

16

20

1048576

1M

5

32

21

2097152

2M

6

64

22

4194304

4M

7

128

23

8388608

8M

8

256

24

16777216

16M

9

512

25

33554432

32M

10

1024

1K

26

67108864

64M

11

2048

2K

27

13217728

128M

12

4096

4K

28

268435456

256M

13

8192

8K

29

536870912

512M

14

16384

16K

30 1073741824

1G

15

32768

32K

31 2147483648

2G

16

65536

64K

32 4294967296

4G

Tablo 1-4 (2)

Digital numara ve onların maksimum değerleri

Binary dijit nedir?

“0” ve “1”

den meydana gelen özel bir sayı sistemidir. Gerçekte desimal sayı

sistemlerinde 9 ve 1 toplandığında 10 elde edilir ancak binary sayı sistemlerinde 1 ve 1 toplandığında 2 olmaz. ( 1 ve 0 ) 10 olur. Mikrodenetleyicilerin sinyal seviyeleri yalnızca iki çeşittir. Ya yüksek ( 1 ) yada alçak ( 0 )’dır. Bu mikrodenetleyici komutları için çok uygundur. Fakat mikrodenetleyiciler için çok kolay ve anlaşılır olan bu binary sayı sitemi gerçekte insanlar için çok zor anlaşılmaktadır. Binary sayı sitemi kolayca hexedesimal sayı siteminede dönüştürülebilemektedir. Sonunda B harfi olan tüm sayılar binary sayı anlamını taşımaktadır. Örneğin 21 olan desimal sayısı binaride 10101B olarak ifade edilir. 21 = 1x24 + 0x23 + 1x22 + 0x21 + 1x20 = 10101B

10

Mikrodenetleyicinin temelleri (3)

Hexedesimal dijit nedir? Hexedesimal sayı sistemi 16 tabanlı bir sayı sistemi olup 0 – 15

arasında sayılarla

ifade edilmektedir. Ancak 10 – 15 arası rakamla değil; A – F gibi harflerle ifade edilir. Örneğin F ( 15 ) sayısına 1 eklediğimizde 10B binary sayısını elde ederiz. 8-bit binary sayıyı 4 er bitlik iki kısıma böleriz ve Hexedesimal sayıya karşılık gelir. Hexedesimal sayıları ifade ederken sonuna H (Hexedesimal) harfini ilave ederiz. 10 = 0AH

(4)

1)

Binary, desimal, hexedesimal sayıların dönüşümleri

DESİMALİN BİNARY’E DÖNÜŞTÜRÜLMESİ Desimal sayıyı 2 ‘ e böleriz. Kalanı yan tarafa yazarız. Buda binary sayıyı verir. Örneğin

decimal 19 olan sayıyı binary sayı sistemine dönüştürelim. 2)

19

2)

9

------

1

2)

4

------

1

2)

2

------

0

1 ------------

0

Lowest bit(LSB) En düşük bit 19 = 10011B Highest bit(MSB) En yüksek bit

Desimal sayı sisteminden hexedesimale dönüştürme işlemi aynı yolla gerçekleştirilir.

2)

BİNARY SAYILARIN DESİMAL’E DÖNÜŞTÜRÜLMESİ Her binary sayısının biti karesi ile çarpılır. ( 20, 21, 22, 23, ------), ve çıkan toplam decimal

sayıyı verir. Örneğin , 1001 binary sayısının decimal sayıya dönüştürülmesi 1 0 0 1 = 1x23 + 0x22 + 0x21 + 1x20 = 8 + 0 + 0 + 1 = 9

11

Mikrodenetleyicinin temelleri 3)

DECİMAL SAYININ HEXEDESİMALE DÖNÜŞTÜRÜLMESİ Desimal sayıyı 16 ve 16n nın üstüyle böl kalanı 16n-1 ile böl tekrar kalanı 16n-2 ile böl bu

işlemi 160 olana kadar tekrarla. Örneğin 677 in hexedesimale dönüştürülmesi. •

677 / 162 = 2

Bölüm : 165

( 677 / 16*16 = 2.64453125 Tam kısmı “2” alınır. 677 – 2 * 16 * 16 = 165 ) •

165 / 161 = 10(0AH)

Bölüm : 5

( 165 / 16 = 10.3125 Tam kısmı “10=A” alınır 165 – 10 * 16 = 5 ) •

5

/

160 = 5

( 5 / 1 = 5 Tam kısmı alınır. ) SONUÇ

677

=

2A5H

Desimal sayı sisteminden binariye dönüşme metodu da kullanılabilir.

4)

HEXEDESİMALİN DESİMALE DÖNÜŞTÜRÜLMESİ Her hexedesimalin sayısı karesi ile çarpılır ( 160,161,162, ----), çıkan sonuç toplanır buda

desimal sayıyı verir. Örneğin A4H in decimal sayıya dönüştürülmesi. A4H = 10x161 + 4x160

5)

=

160 + 4 = 164

BİNARİNİN HEXEDESİMALE DÖNÜŞTÜRÜLMESİ Binary sayıları her biri 4’er bitlik gruplara ayırırız ve bunları hexedesimale dönüştürüz.

sonra bunları bir düzene koyarız. Bu hexedesimal sayıdır. Örneğin 101110B nin hexedesimal sayıya dönüştürülmesi. 0010

1110 00101110B = 2EH

2

6)

E

HEXADESİMAL’İN BİNARY SAYI SİSTEMİNE DÖNÜŞTÜRÜLMESİ Her bir Hexedesimal sayıyı 4‘ er bitlik binary sayılara dönüştürürüz ve bunları

bieleştirdiğimizde Binary karşılığını bulmuş oluruz. Örneğin B2H hexedesimal sayıyı binarye dönüştürelim. B

2 B2H

1011

=

0010 12

10110010B

PIC yazıcısı ve eğitim seti yapmak

Bölüm 2

PIC yazıcısı ve eğitim seti yapmak

PIC Yazıcısı ve Eğitim seti

13

PIC yazıcısı ve eğitim seti yapmak PIC mikrodenetleyiciyi göreceğiz. Mikrodenetleyiciye program yazmayı ve yazılan programı denemek için gerekli olan deney setini burada hazırlayacağız.

1

Elektronik elemanların anlatımı Temel endstriyel elektronik dersinde ana elektronik parçaların özelliklerini öğrendik. Burada

PIC yazıcı ve deney setini öğrenmiş olacağız. (1) Transistör 1) 2SC1815 ( npn transistör ) 2SC1815 npn tipi küçük sinyal transistörü

2SC 1815

C

E : emitter

B

C : kolektör B : beyz

E

E

C

B

Şekil 2-1

2SC1815

2) 2SA1015 ( pnp transistör ) 2SA1015 pnp tipi küçük küçük sinyal transistörü

2SA 1015

E

E : emitter

B

C : Kollektör B : beyz

C

E

C

B

Şekil 2-2

2SA1015

14

PIC yazıcısı ve eğitim seti yapmak (2)

LED ( light emitting diode ) ( Işık yayan diyot ) Güç kaynağında enerjinin olup olmadığını öğrenmek için ve eğitim setinde yazılan programa

gore işevini yapıp yapmadığını kontrol amacıyla LED kullanacağız. Görünen ışığın dalga boyu LED( Light Emitting Diode ) 380 – 760 nm. arasındadır.

K A

Uzun uç anadu göstermektedir. ( + ) LED aşağıdaki özellliklere sahiptir.. lens

a) Uzun ömürlüdür b) Düşük güç harcarlar

bonding wire LED chip

c) Sahip oldukları ısı çok azdır. d) Yüksek hızda çalışma gösterirler e) Çizimi kolaydır f)

lead frame

Şekil 2-3

Işıklandırma kontrolü kolaydır.

LED’in yapısı

Mavi LED 1993 de japonyada bir şirket tarafından geliştirildi. Günümüzde bir çok alanda kullanılmaktadır çünkü 3 ana renge sahiptir. ( kırmızı, yeşil ve mavi. ) ( örneğin :

dot matrix

ekran tam renkli ekrandır. ) (3)

Diyot ( anahtar diyot ) 1S1588 küçük bir anahtar diyottur. Düz polarma durumunda 0,6 V. gerilime sahiptir.

Şekil 2-4

15

Diyot

PIC yazıcısı ve eğitim seti yapmak

(4)

Seri regülatör ( Gerilim düzenleyici ) Sabit bir gerilim elde etmek seri regülatör ile çok kolaydır. Örneğin, eğer 7805 seri regülatör

şekil 2-5 deki gibi kullanılırsa 5V. düzenli ve sabit bir gerilim elde edilmiş olur.

Şayet 7812 de aynı

şekilde kullanılacak olursa bu defada 12 volt sabit gerilim elde edilmiş olur.

in 7805 out G ND

Giriş

7805

Çıkış D C 5V

D C 8V

1

Şekil 2-5

2

3

seri regülatör

PIC programını yazma devresi için gerekli olan voltaj 12,5 volttur. 12,5 Voltu elde edebilmek için 7812 seri regülatörün toprak ( GND ) kısmına diyot elde

in 7812 out GND

Giriş

Çıkış gerilim 12,5 volt değerindedir ve diyotun her iki ucunda da 0,5 volt’luk gerilim oluşmuş

Çıkış

DC15V

olur.

DC12.5V

Şekil 2-6

Kutup

pozitif

etmemiz yeterli olacaktır. Şekil 2-6

12,5 Volt elde edilmesi

Model

Çıkış akımı

Uçların karşılıkları

numarası

1

2

3

78M serisi

500mA

Giriş

GND

Çıkış

78 serisi

1A

Giriş

GND

Çıkış

500mA

GND

Giriş

Çıkış

1A

GND

Giriş

Çıkış

negatif 79M serisi 79 serisi

Tablo 2-1 Seri regülatör

16

PIC yazıcısı ve eğitim seti yapmak (5)

Kristal osilatör

Kristal osilatör mikrodenetleyicilere pals üreterek çalışmalarını sağlayan elemandır. 4MHz. lik kristal osilatörler kullanmaktayız. PIC ‘e göre en doğru kristali seçmemiz gerekmektedir. Eğer uygun kristal seçersek en doğru pals elde etmiş oluruz. PIC’ ler 4 – 10 – 20 MHZ gibi hızlara sahiptir ve kristali yüksek hızda da seçsek PIC in en yüksek hızına göre çalışma sağlanır. Şekil 2-7

(6)

Kristal osilatör

Transistor düzeni ( ULN2803 )

Transistor düzeninde 8 adet darlington transistor kullanılmıştır. Diyotlarda bu transistor düzeni içinde bulunmaktadır ve röle veya benzerleri elemanları kontrol edilebilme özelliği vardır. ULN2803 50 Volt ve 500 mA yükü kontrol edebilir. Mikrodenetleyici kontrolleri için transistor düzeneği çok kullanışlıdır.

+

GND

ULN2803

LED ULN2803 Şekil 2-8

röle ULN2803

Transistor düzeneği ( ULN2803 )

17

PIC yazıcısı ve eğitim seti yapmak 2

PIC eğitim setinin yapılışı

(1) Elektronik devre üzerinde deliklerin delinmesi Delik delme işlemi her iki devre içinde yapılır. 0.8mm lik matkap ucu kullanılmalıdır. Şekil 2-9 ve Şekil 2-10. de gösterildiği gibi de 1mm, 1.5mm, 3mm, and 6mm çaplarındada deliklerde mevcuttur. 1mm

JICA

1mm

2003

1mm 1mm

1mm

2.5mm

Şekil 2-9

PIC Yazıcı

3mm

3mm

1mm

1mm

3mm 3mm

1mm

Şekil 2-10

PIC deney seti

18

PIC yazıcısı ve eğitim seti yapmak (2)

Alt taban ( Şeffaf ) deliklerinin açılması

Alt taban yapılan elektronik devrenin biraz havada kalmasını sağlayan ve yerle temasını gerçekleştiren bölümdür. Şeffaf malzeme üzerindeki koruma yapışkanı delikler açıldıktan sonra

120mm

Bu deliklerin yerlerini elektronik devrenize göre işaretleyiniz.

150mm

çıkartılmalıdır. Bütün delikler 3 mm olmalıdır.

170mm 200mm

Şekil 2-11 Şeffaf alt taban delikleri (3) Lehimleme yöntemi 1) Lehimleme Elektronik devrelerin montajında lehimleme çok önemli bir aşamadır. (a) Havyanın ucunu lehimlenecek olan yere tut. ( yaklaşık

1 saniye )

(b) Sonra lehimi tut ve lehim erir. (c) Daha sonra lehim ve havya ucunu aynı zamanda lehim yapılan yerden uzaklaştır. lehim havya

lehim

(a)

havya

(b) Şekil 2-12

Lehimleme yöntemi

19

havya

(c)

PIC yazıcısı ve eğitim seti yapmak 2) Lehimlemeyi kontrol et.

KÖTÜ

İYİ

Şekil 2-13 3)

Lehimleme

Kalan fazla kablo başlarının kesilmesi Kalan fazlalığ' ı nasıl keseriz Ucu eğip bükmeyiniz kes

kes

Şekil 2-14 (4)

Kablo fazlalıkları nasıl kesilir.

Elektronik parça elemanlarının yerleştirilmesi

Direnç ve kondansatörler şekilde gösterildiği gibi montajı yapılır.

İYİ

KÖTÜ

Ucu eğip bükmeyiniz

104K

1mm

Şekil 2-15

104K

Elektronik parça elemanlarının yerleştirilmesi

20

PIC yazıcısı ve eğitim seti yapmak (5) PIC yazıcısının devre diagramı 12.5V

5.0V

DC15V 7812

7805

+5V 1k

2.2k 220uF 0.1uF

1S1588

0.1uF

0.1uF

PIC 14P

300

0.1uF LED

2.2k 2SA1015 2SC1815

D3 1

MCLR

PIC 4P

GND

PIC 5P

2200pF

2.2k

2.2k

D4

1S1588

2SC1815

6 2 7 3 8 4 9

5

GND BUSY D0

DATA(RB7)

PIC 13P

CLOCK(RB6)

PIC 12P

74LS244 D2 D5 D1 74LS244

Dsub (9P)male

1k 74HC00 LED

Şekil 2-16 (7)

PIC yazıcısının devresi

PIC yazıcı parçalarının düzenini gösteren şema

Şekil 2-17

Yerleşim şeması

21

PIC yazıcısı ve eğitim seti yapmak (7) PIC eğitim seti devre diyagramı

BZ

22

1k 22k +5V PIC16F84

10k X 4

300 X 8

ULN2803 RA0

RB0

RA1

RB1

RA2

RB2

RA3

RB3

LED X 8

a C

1S1588

f g

RB5 RB6

MCLR

f

d e

RB4

10k

a

b

e

C

d

P

RB7

b

g

P

22pF

7segment LED

OSC1

GND

anode common

+5V

22pF 4MHz

MCLR

OSC2

+

CLOCK

GND

DATA

ULN2803

Şekil 2-18

PIC eğitim seti devresi

(8) PIC eğitim seti yerleşim şeması

Şekil 2-19

Yerleşim şeması

22

PIC yazıcısı ve eğitim seti yapmak

(9) Parça listesi

Parça Listesi Sıra No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

Parçanın ismi Baskı devre IC soket IC soket IC soket IC IC PIC microdenetleyici Transistör düzenleyici Regülatör IC Regülatör IC LED LED Transistör Transistör Diyot Direnç Direnç Direnç Direnç Direnç Direnç Kondansatör Kondansatör Kondansatör Elektrolitik kondansatör Anahtar Konnektör ( PC için ) Kablo konnektörü Konnektör Kablo konnektörü Konnektör ( set için ) Konnektör Konnektör Konnektör Güç giriş soketi AC adaptör Kablo Kristal Basmalı buton Piezoelektrik hoparlör 7 segment LED Şeffaf alt taban Vida Vida somunu Yükselti elemanı

Özelliği Yazıcı ve Eğitim seti için 14pin 18pin 20pin 74HC00 74LS244 PIC16F84A ULN2803 7805 7812 kırmızı yeşil 2SA1015 2SC1815 1N4148 300Ω 1/4W 2.2kΩ 1/4W 1kΩ 1/4W 10kΩ 1/4W 22Ω 1/4W 22kΩ 1/4W 0.1uF 2200pF 22pF 220uF 16V 3P üç uçlu D sub 25P erkek Dsub 25P D sub 9P dişi Dsub 9P D sub 9P erkek 5P erkek devre için 5P dişi 10P erkek devre için 2P 15V 300mA 8 li 1.2m 4MHz

100*150 M3*30 M3 20mm

23

Adedi 1 1 3 1 1 1 1 1 1 1 9 2 1 3 3 9 4 3 5 1 1 4 1 2 1 2 1 1 1 1 1 2 2 2 1 1 1 1 5 1 1 2 8 8 8

PIC yazıcısı ve eğitim seti yapmak

1

5

T U N IK

T U N IK

5

1

(10) Bağlama aparatının yapımı

20cm

Şekil 2-20

PIC devrelerinin birbirine bağlanma aparatı

Şekil 2-21

1

Açık pinleri kapatma aleti

2

3

Şekil 2-22

Aletin kullanılması

Şekil 2-23

Uçları plastiğe geçir

24

4

PIC yazıcısı ve eğitim seti yapmak (11) Bilgisayar bağlantı kablosunun yapımı

80cm

2 3 4 5

6

6

7

7

8 9

10

2 ………... 8 ( D0 ) 25

D sub 2 5 P ( Erkek)

3 ………... 9 ( D1 )

D sub 9 P

4 ………... 4 ( D2 )

( Dişi)

5 ………... 1 ( D3 ) 6 ………... 2 ( D4 ) 7 ………... 5 ( D5 ) 10 ………. 3 ( ACK ) 25 ………. 7 ( GND )

2-24

Kişisel bilgisayar için kablo

25

1 2 3 4 5

PIC’ in yapısı

Bölüm 3 PIC’in yapısı 1

PIC16F84

(1) PIC16F84

RA2

RA1

RA3

RA0

MCLR GND RB0,INT

PIC16F84

RA4/T0CLKI

OSC1/CLOCKIN OSC2/CLOCKOUT +Vcc RB7

RB1

RB6

RB2

RB5

RB3

RB4

Şekil 3-1

PIC16F84

Her bir ucun açıklanması : OSC1/CLOCKIN

: Osilatör girişi / External oscillator input

OSC2/CLKOUT

: Osilatör girişi / OSC1 frekansının ¼ değerindeki çıkış clock ucu

MCLR ( inv )

: Reset girişi

RA0 – RA3

: Giriş Çıkış uçları

RA4/T0CKI

: Giriş Çıkış ucu / TMR0 için clock puls giriş ucu

RB0/INT

: Giriş Çıkış ucu / Dış kesmeler için giriş ucu

RB1-RB7

: Giriş Çıkış ucu

GND

: Güç kaynağının eksi ( - ) ucu

Vcc

: Güç kaynağının artı ( + ) ucu Yazılan bir programı PIC’e kayıt ederken ise RB6 ucuna clock pulse, RB7 ucuna data

bilgilerini vermemiz gerekir. Ayrıca MCLR ucuna 12,5 Volt, GND ucuna ( - ) eksi, Vcc ucuna da +5 Voltu vermeyi unutmamalıyız.

26

PIC’ in yapısı PIC16F84 18 uçlu 1 Kbyte flaş program belleği, 68 bayt RAM bellek, belleğe sahiptir.

64 Byte EEPROM

PIC16F84’ e program elektrik sinyalleri ile kolayca tekrar tekrar yazılabilir

veya silinebilir. Ancak ROM bellek olanlarda ise tekrar yazabilmek için ültraviyole ışınlara ihtiyaç vardır. (2) PIC16F84’ ün yapısı Flash Program Belleği

RAM

EEPROM(1Kbyte) 000

004

RESET

INTERRUPT POINT

005 PROGRAM AREA

Bank 1 80

INDIRECT ADDR

00

INDIRECT ADDR

81

OPTION

01

TMR0

82

PCL

02

PCL

83

STATUS

03

STATUS

84

FSR

04

FSR

85

TRISA

05

PORTA

86

TRISB

06

PORTB

87 3FF

program counter

PORTA

5bit PORTB

8bit

07

88

EECON1

08

EEDATA

89

EECON2

09

EEADR

8A

PCLATH

0A

PCLATH

8B

INTCON

0B

INTCON

0C

EEPROM DATAMEMORY

64byte

workmemory

4F

36byte

stack 8 lebel

Fetch/Decode watch dog timer

ALU reset Working resistor W clock

Şekil 3-2

PIC16F84’ ün blok diyagramı

PIC RISC ( Reduced Intruction Set Computer ) denilen azaltılmış komut sistemini kullanmaktadır. Bu sistem sayesinde komutlar daha sade ve daha azdır. Bir PIC i programlamak için 35 komut kullanılır. PIC de yöntem bir komutu genellikle bir clock ile gerçekleştirmesidir. Program belleği ( memory ) ( ROM ) ve data belleği ( memory ) birbirinden bağımsızdır. ( Harward mimarisine göre ) Bu hafıza yapısı ile her iki hafızada

27

PIC’ in yapısı 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 bit , data belleği 8 bittir.) Çünkü 1 kelimenin makineye tanıtımı 14 bit ile gerçekleştirilir. Örneğin MOVLW B '01011111' komutunu makine 11000001011111 olarak tanır. Bunun 6 biti olan 110000 MOVLW komutunu ifade eder, 01011111 ise data bölümünü tanımlar. (3) Clock düzeni / Komut süresi Clock girişi (OSC1 den) içten dörde bölünmüştür. Bunlar Q1, Q2, Q3, Q4 olan bu bölümler kare dalga şeklindedir.

Program sayacı ( PC ) her Q1 de bir artırılmakta ve

komutlar program belleğinde işleme sokularak Q4 de sona ermektedir. Komutlar Q1 den Q4 e kadar çözülerek işleminin gerçekleşmesi sağlanır. Clock pulse ve bunun düzeni Şekil 3-3 de görülmektedir.

( Microchip technology inc. Manual) Şekil 3-3

Clock / Komut örneği

(4) Komut akışı / Bilgi iletim kanalı Komut süreci “Instruction Cycle” dört Q den oluşmaktadır. Bunlar (Q1,Q2,Q3 ve Q4). Komutun aktarılması ve işleyişi şu şekilde olmaktadır. Devir bir komut sürecini üstlenirken iletim ve yürütme diğer komut sürecini üstlenmektedir. Bununla birlikte bilgi iletim nedeniyle her bir komut etkin olarak bir süreçte yürütülür. Eğer komut bir program sayacının değişmesine neden olmuşsa ( Örneğin GOTO ) komutu kullanılmışsa o zaman komutun tamamlanması için iki süreç gereklidir. (Şekil 3-4) 28

PIC’ in yapısı Devir süreci her Q1

de değeri bir artan program sayacı ( PC ) ile başlar. Yürütme

sürecinde işleyen komut Q1 sürecindeki komut kaydına gönderilir. Daha sonra bu komut Q2,Q3,Q4 süreçleri boyunca çözülür ve işlem gerçekleştirilir. Veri belleği Q2 boyunca okunur ( Bilgi okuması ) ve Q4 boyunca yazılır ( Yazılacak hedef ) ( Bilgi iletim kanalı (Pipeline) : PIC;

komutları uygularken bir sonraki komutu da alır. Onu

çözüp uygulamaya geçerken aynı anda bir sonraki komutu alır. Bu işlem sürekli devam eder.

clock

execution clock

execution

execution

ju

fetch

m

p

st

ru

ct

fetch

Şekil 3-4 (5)

in

execution i

No operation

execution

on

fetch

fetch

fetch

Bilgi iletim kanalının yapısı

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

kullanılan bir kısımdır. Direk olarak ulaşamayız. PIC’te yapılan tüm işlemler ve atamalar bunun üzerinden yapılmak zorundadır. memory

00111010

Örneğin M1 deki data bilgilerini M2 ye M1

aktarmak istersek once M1 deki bilgileri W yazmacına ( register ) aktarırız daha sonrada

W register

geçici alanda bulunan ( w registeri ) bu 00111010

M2

bilgileri M2 kısmına aktarırız. M1 deki bilgiler M2 ye direk olarak aktarılamaz mutlaka W yazmacını kullanmak zorundayız.

Şekil 3-5

W yazmacı ( register )

29

PIC’ in yapısı (6) Program belleği ( memory ) Assembly de kullanılan komutlarla yazılmış programın yüklendiği alandır. Program belleği ( memory ) (ROM). Bu alan

PIC16F84 de EEPROM şeklindedir. Program yazıcısı

kullanarak ROM’a programımızı rahatlıkla yazabiliriz. Çünkü elektrik dalgasıyla 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ıda saklanır. Bir PIC te ROM belleğe program yaklaşık 1000 defa yazılabilir.

( Program

belleğinin genişliği 14 bittir. PIC16F84 program belleğinin 1024 ( 1K ) alanı 000 dan 3FF kadar olan adrestedir ve 3FF de 1024 demektir. ( Bölüm 1 deki Tablo 1-2 de daha detaylı bilgi verilmiştir. ) program memory 000

004

RESET

INTERRUPT POINT

005 PROGRAM AREA

3FF

Şekil 3-6

ROM belleğin haritası ( program memory )

30

PIC’ in yapısı

2

Veri belleği ( DATA memory )

(1) Veri belleği ( Ram Bellek ) Veri belleği iki kısımdan meydana gelmektedir. Bunların her birine Bank adı verilir. Bank 0 ve Bank 1 dir. Bank 1 dediğimiz ilk bölüm özel fonksiyon ( Special Function Register ) ( SFR ) yazmaç alanıdır. Bank 0 ise ikinci bölümdür ve buna da genel amaçlı yazmaç ( General Purpose Register ) ( GPR ) denir. GPR alanı genel amaçlı RAM ‘ın 16 baytından daha fazlasına olanak sağlamak amacıyla bölünmüştür. SFR ise özel fonksiyonları kontrol eden kayıtlara aittir. Bunların seçimleri için kontrol bitleri gerekmektedir. İşte bu kontrol bitleri de STATUS yazmacında bulunmaktadır. Şekil 3-7 de veri belleğinin harita organizasyonu göstermektedir. Veri belleği genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki bölümü vardır. 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 onikisinin yerleşimi özel fonksiyon kaydı için ayrılmıştır. Kalanı ise statik RAM olarak genel amaçlı kayıtları yürütmektedir.

Bank 1

Bank 0 00

INDIRECT ADDR

80

INDIRECT ADDR

01

TMR0

81

OPTION

02

PCL

82

PCL

03

STATUS

83

STATUS

04

FSR

84

FSR

05

PORTA

85

TRISA

06

PORTB

86

TRISB

87

07 08

EEDATA

88

EECON1

09

EEADR

89

EECON2

0A PCLATH

8A PCLATH

0B

8B INTCON

0C

INTCON

GPR Work memory

4F

bit 5 ' 1 '

68byte bit7

bit6

bit5

RP1 RP0

STATUS register

bit 5 ' 0 '

Şekil 3-7

PIC16F84 ün Kayıt dosya haritası

31

PIC’ in yapısı 1) Genel amaçlı kayıt dosyası Bütün cihazlar belli bir miktar genel amaçlı kayıt alanlarına sahiptirler. Bu PIC 16F84 de 68 byte’dır. Her bir GPR 8 bit genişliğindedir ve dolaylı yada doğrudan SFR üzerinden erişilmektedir. 2) Özel Fonksiyon Kayıtları Özel fonksiyon kayıtları aygıtın işlemini kontrol etmek için CPU ve özel fonksiyonlar tarafından kullanılmaktadır. Bu kayıtlar statik olan RAM’ dadır. (2) Yığın hafıza ( Stack Memory ) PIC16F84

8 derinliğinde ve 13 bit genişliğinde yığına ( stack ) sahiptir. ( Şekil 3-2 ). Bu

yığın alanı program veya bilgi ( data ) yeri değildir ve direk olarak okunamaz veya yazılamazlar. CALL komutu veya kesme ile 13 bitlik ( PC ) program sayıcı yığının üzerine konur bu işleme “pushed “ denir.. Yığındaki bu adres alt programlar çalışıp bittikten sonra en sonunda bulunan ‘RETLW , RETFIE’ komutları ile yığından atılır bu işlemede “popped” denir. Burada dikkat edilecek 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. (3) Program sayıcı ( Program counter )

( Adres 02h , PCLATH Adres 0Ah)

Program Sayıcı ( Program Counter ) (PC) 13-bit genişliğindedir. Yürütülecek komutun program belleğindeki adresini tutar. Bu nedenle kendisi bir gösterge olarak görev yapar. Program sayıcının alt 8 bitine PCL düşük byte denir PCL okunabilen - yazılabilen bir yazmaçtır. Üst 5 bitine ise PCH yüksek byte denir ki bu ( PC ) arasındadır ve direk olarak okunup yazılamaz. RAM bellekte H’0A’ adresinde bulunan özel PCLATH ( PC latch high ) yazmacından okunup yazılabilirler. PCLATH’ın içeriği program sayıcının üst bitlerine transfer olur ve PC yeni bir değerle yüklenmiş olur. Bunu şekil 3-8 de görebilirsiniz. CALL, GOTO gibi komutlar PCL ye yazılırlar çünkü 256 byte’ dan küçüktürler. RESET durumunda ise üst bitler temizlenir. Program

12

Sayıcı

PCH

87

PCL

0

Adres 02 ‘de 5

8 ALU sonuç

PCLATH

Şekil 3-8

Program sayıcı

32

PIC’ in yapısı (4) STATUS Yazmacı ( Register ) ( Adresi 03h,83h ) STATUS yazmacı ( register ) aritmetik mantık ünitesine ( Arithmetic Logic Unit ) ALU sahiptir. RESET durumu içeren veriler ve bank seçimi sağlayan bilgilerde mevcuttur. b7

b6

b5

R/W-0

R/W-0

R/W-0

R-1

R-1

R/W-x

R/W-x

R/W-x

IRP

RP1

RP0

TO

PD

Z

DC

C

R=Okunabilir bit

b4

b3

b2

W=Yazılabilir bit

b0

-n=Reset değeri

İlk değer ( enerji verildiği andaki değeri ) bit7:

b1

00011xxx

IRP: Bank seçme bit’i ( Register Bank Select bit ) IRP bit’i PIC 16F84A’larda kullanılmaz. .IRP sıfır olarak kalmalıdır.

bit 6-5:

RP1:RP0: Bank seçme bit’i ( Register Bank Select bit ) 00 = Bank 0(00h-7Fh) 01 = Bank 1(80h-FFh) Her bir bank 128 byte’dır. PIC16F84A ‘da sadece RP0 kullanılır. RP1 sıfır

olmalıdır. bit 4:

TO: Zaman aşım bit’i

( Time-out bit )

1= PIC’ e enerji verildiğinde ve CLRWDT ve SLEEP komutu çalışınca 0 = WDT zamanlayıcısında zaman dolduğunda bit 3:

PD: Enerji kesilme bit’i ( Power-down bit ) 1 = PIC’e enerji verildiğinde ve CLRWDT komutu çalışınca 0 = SLEEP modu çalışınca

bit 2:

Z: Zero bit ( Sıfır bit’i ) 1 = Bir aritmetik işlem veya mantıksal işlem sonucu 0 ( sıfır ) olduğunda 0 = Bir aritmetik işlem veya mantıksal işlem sonucu 0 ( sıfır ) olmadığında.

bit 1:

DC: Taşma ve Ödünç bit’i ( Digit carry/borrow bit )( ADDWF ve ADDLW komutları için ) 1 = Alt dört bitin 4. bitinde taşma meydana geldiğinde 0 = Alt dört bitin 4. bitinde taşma meydana gelmediğinde

bit 0:

C: Taşma ve Ödünç bit’i ( Carry/borrow bit )( ADDWF ve ADDLW komutları için ) 1 = En soldaki 7.bitte taşma olduğunda 0 = En soldaki 7.bitte taşma olmadığında

Not: RLF ve RRF komutları çalıştığında en sol bit veya en sağ bitin değeri carry bitine yüklenir.

33

PIC’ in yapısı 3

I / O port ( input / output )

RA2

RA1

RA3

RA0

ait I/O portlar şekil 3-9 da görülmektedir. Buradan da anlaşılacağı gibi PIC16F84’ün en fazla uçları I/O için

PIC16F84

RA4

I/O portları sinyalin giriş ve çıkışlarıdır. PIC16F84 ‘e

ayrılmış olup program kontrolü için kullanılmaktadır. RB7

A portu 5 Adettir ( RA0,RA1,RA2,RA3,RA4 )

RB1

RB6

B portu 8 Adettir.( RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7 )

RB2

RB5

Toplam 13 Adet giriş veya çıkış olarak kullanılmak üzere

RB3

RB4

RB0

Şekil 3-9

uçları vardır.

I/O portları

(1) Giriş İşlemi Eğer PIC giriş ( input ) modunda olursa, FET çıkışları kapatır Giriş sinyali tampona doğru akar. ( Şekil 3-10 ) VDD

PIC

input mode > OFF

R

I / O PIN

input mode > OFF

VSS

VSS

DATA read

Şekil 3-10 Giriş işlemi

34

PIC’ in yapısı (2) Çıkış işlemi PIC’ in çıkışı FET’ lidir. Eğer akım gerilim kaynağından çıkış portuna doğru ise buna SİNK akım( Şekil 3-11 ), I/O pininden GND’ye doğru ise buna da KAYNAK ( Source )

akımı

denir. ( Şekil 3-12 ) Kaynak akımı en fazla 20 mA. iken sink akımı ise en fazla 25mA.dir.

VDD R

PIC

' 0 ' or input mode > OFF

P

LED etc

MAX=25mA ' 0'

>

ON

I / O PIN

N

VSS

Şekil 3-11

Sink akımı

VDD

' 1'

>

PIC

ON

P

MAX=20mA

I / O PIN ' 1 ' or input mode > OFF

R

N

LED etc

Şekil 3-12

Kaynak ( source ) akımı

35

PIC’ in yapısı 4

Reset Devresi

(1) Resetleme İşlemi ( Power on Reset ) ( POR ) MCLR ( Memory Clear ) ucuna düşük gerilim ( 0V ) uyguladığımızda, PIC16F84 reset edilmiş olur ve program başlangıçtaki adresine geri döner. MCLR ucu tekrar yüksek gerilim 5V olduğunda

PIC16F84 programın çalışmasına ilk adresten itibaren devam eder. Kısaca

MCLR ucu 0V. olduğunda program çalışmaz sadece ilk adrese gider. Programın çalışabilmesi için MCLR ucunun tekrar 5V. olması gerekir. 1) VDD’ ye direk olarak resetleme VDD yüksek gerilimi bulduğunda ( 1.2V – 1.7V ) reset çalışmaya başlar. PIC’in resetinden yararlanabilmek için MCLR ucunu direk olarak VDD ye bağlayınız. Buna dirençte eklenebilir. VDD 10K

MCLR

PIC

Şekil 3-13 VDD’ ye direk olarak resetleme 2) PIC’ in dışarıdan resetlenmesi Eğer VDD ile resetleme yavaş oluyor ve bunun hızlı gerçekleşmesini istiyorsak dış reset yapmamız gerekir. VDD gerilimini hızlı bir şekilde 0 yapmak için LED ve kondansatör kullanmamız gerekir. LED kondansatörü hızlı bir şekilde boşaltır ( deşarj ) hızlanmış olur. (C : 1 – 10 uF) VDD

D

10K

MCLR

C

PIC

Şekil 3-14

PIC in dışarıdan resetlenmesi

36

ve işlem

PIC’ in yapısı (3) Butonla Reset Şekil3-15 de görüldüğü gibi MCLR ucunu düşük gerilime ulaştırmak için reset butonu vardır. Bu buton basılıp çekilir ve program ilk adresten itibaren çalışmaya başlar.

VDD

D

VDD

10K

10K

MCLR

button Switch

MCLR

button Switch

C

PIC

Şekil 3-15 Butonla Reset

37

PIC

PIC’ in yapısı 5

Osilatör özellikleri

(1) osilatör modelleri PIC16F84 dört değişik osilatörleme ile çalışabilir. Bunlar LP : Düşük güç kristal ile

Low Power crystal

( yaklaşık 40KHz)

XT : Kristal / Rezanatör ile

Crystal / Resonator

(0 – 10MHz)

HS : Yüksek hız kristali / Resonatör

High Speed Crystal / Resonator

(4 – 10MHz)

RC : Direnç / Kondansatör ile

Resistor / Capacitor

(0 – 4MHz)

(2) Kristal / seramik resonator işlemi

Seramik rezanatör

Düşük güç kristali Kristal osilatör Şekil 3-16

Kristal Çeşitleri

XT, LP veya HS modeller kristal veya seramik rezanatör ile OSC1/CLKIN ve OSC2/CLKOUT uçlarına bağlanırlar. Böylece osilatör sağlanmış olur. ( Şekil 3-17 )

C1

OSC1

OSC1

PIC

rezanatör

PIC

XTAL OSC2

OSC2 C2

Şekil 3-17

38

PIC’ in yapısı Mod LP

XT

HS

Frekans

OSC1 / C1

OSC2 / C2

32kHz

68-100pF

68-100pF

200kHz

15-33pF

15-33pF

100kHz

100-150pF

100-150pF

2.0MHz

15-33pF

15-33pF

4.0MHz

15-33pF

15-33pF

4.0MHz

15-33pF

15-33pF

10.0MHz

15-33pF

15-33pF

Tablo 3-1 Kristal osilatör için Kondansatör seçimi (3) RC Osilatör Zamanın çok hassas olmadığı durumlarda RC osilatör kullanılarak maliyet düşürülür. RC osilatör frekansı gerilim kaynağının özelliğine, direncin değerine, kondansatörün değerine ve işlem ortamının sıcaklığına bağlıdır. Buna ek olarak osilatör frekansı normal işlem parametrelerine göre sapmalar gösterir. Bu sapma % 20 civarındadır. Şekil 3-18 de bu osilatör tipinin PIC16F84‘ e nasıl bağlandığı görülmektedir. Direnç değeri 4k-ohm’un altında olan osilatör işlemlerinde osilasyon sabit olmayabilir veya tamamen durabilir. Çok yüksek değerde dirençler ise ( yaklaşık

1M-ohm ), gürültüye, neme ve sızmaya çok hassaslaşır. Bu

nedenle direnç değerini 5 k-ohm ve 100k-ohm arasında kullanılmalıdır. Her ne kadar osilatör dış bir kondansatörle

VDD

çalışmıyor olsa bile biz gürültü ve sabitliliği sağlamak için 20pF değerinin üzerindeki değerde

Rext

bir kondansatörün kullanılmasını tavsiye ederiz.

OSC1

PIC

Cext OSC2

Tavsiye edilen değerler 5k

< Direnç

Kondansatör Şekil 3-18

RC Osilatör

39

< >

100k 20pF

PIC programlamanın temelleri

Bölüm 4 PIC Programlamının temeli 1

MPLAB ( MPASM ) ‘ı nasıl Kullanırız ?

(1) Basit bir program INCLUDE”P16F84.INC” ;Adresleri belirten dosyayı yükle

(1)

LIST

P=16F84

;16F84 ün tanıtımını yap

(2)

BSF

STATUS,5

;Bank 1’ e geç

(3)

CLRF

TIRSB

;PORTB nin hepsini çıkış yap

(4)

BCF

STATUS,5

;Bank 0’ a geç

(5)

CLRF

PORTB

;PORTB’ nin hepsini 0 yap

(6)

BSF

PORTB,0

;PortB’ nin 0.bitini 1 yap ( LED yak )

(7)

DEVAM

;Sonsuz döngü ile programı sonlandır (8)

DEVAM GOTO END

(9)

Bu program eğitim setindeki 8 ledden bir tanesini ( ilk led ) yakan diğerlerinin sönük kalmasını ( sıfır olduğu için ) sağlayan bir programdır. Bu programı daha ayrıntılı inceleyecek olursak, (1) TRISB, PORTB, STATUS gibi değişkenlerin adreslerini içerisinde bulundurur. Bunu PIC’ e yükleme işlemini gerçekleştirir. ( Ayrıntılı bilgi sayfa 73’ dedir. ) (2) Hangi pic çeşidinin kullanılacağını tanımlar Programın (3) - (6) satırları arasında ise PIC’in portlarının çıkış veya giriş olacağı tanımlanır. Bu işlemin nasıl olduğu sayfa 69 ‘ da ayrıntılı olarak açıklanmıştır. (6) Belirlenen bir LED’in yanması sağlanır. (7) Sonsuz döngüye girerek programda başka bir işlem yapmamasını sağlanır. (8) END komutu ile programın bittiğini belirtiriz. (2) Sayıların ifade edilmesi Form

Format

Örnek

D’ < digit >’

D’100’

.

‘< digit >’

. ’100’

H’< hex_digit>’

H ’9F’

0x

0 x 9F

Oktal

O’’

O’67’

Binary

B’

B’00111011’

A‘ ‘

A‘C’

’’

’C’

Desimal Heksadesimal

ASCII Kod

Tablo 4-1 MPASM için sayıların ifade edilmeleri 40

PIC programlamanın temelleri (3) Programın temel ifade şekli Etiket

Komut

Belleteç

Tanımlama

PROGRAMDA DİKKAT EDİLECEK NOKTALAR 1: Etiket en başta olmalıdır. •

İki alt çizgi “__” ile başlamamalıdır.



Bir alt çizgi ve sonrasında rakam “_2” olmamalıdır.



Assembly komutları ve kullandığı kelimeler etiket olamaz.



Bir etiket en fazla 32 karakter olmalıdır.



Etikette büyük küçük harf ayrımı mevcut olup büyük ve Türkçe olmayan harflerin kullanılması tavsiye edilir.

2: Etiket yazılması gerekmediği zaman komut yazılacağında bir veya daha fazla boşluk bırakılması gerekmektedir. 3: Açıklama yazılacaksa (;) noktalı virgül den sonra yazılmalıdır. 4: Bir satırda en fazla 200 karakter olmalıdır. 5: Her paragraf bir veya daha fazla boşlukla ayrılmalıdır.

Etiket

DEVAM

Komut

Belleteç

Tanımlama

INCLUDE

”P16F84.INC”

;Adresleri belirten dosyayı yükle

LIST

P=16F84

;16F84 ün tanıtımını yap

BSF

STATUS,5

;Bank 1’ e geç

CLRF

TIRSB

;PORTB nin hepsini çıkış yap

BCF

STATUS,5

;Bank 0’ a geç

CLRF

PORTB

;PORTB nin hepsini 0 yap

BSF

PORTB,0

;PortB’nin 0.bitini 1 yap ( LED yak )

GOTO

DEVAM

;Sonsuz döngü ile programı sonlandır

END

41

PIC programlamanın temelleri (4)

Program yazmanın yöntemi

Başla

Editör ile program yazma

MPASM ile dosyayı HEX dosya haline derleme

Evet Hata var mı ?

Hayır Yazılan program PIC’e transfer

edilir

ve

doğruluğu kontrol edilir.

Evet

Hata Var mı ?

Hayır

SON

Şekil 4-1

Program yazmanın yöntemi

42

PIC programlamanın temelleri (5) MPLAB nasıl kullanılır ? 1) MPLAB PROGRAMININ BAŞLATILMASI 【Windows】start → program → Microchip MPLAB IDE →

MPLAB IDE

MPLAB programını başlattığımızda aşağıdaki ekran görünür.

Şekil 4-2 MPLAB başlama penceresi 2) MPLAB IDE YAZI EDİTÖRÜNE PROGRAM YAZILMASI

Şekil 4-3

Program girişi

Programın sonuna END adlı komutu mutlaka yazmamız gerekmektedir. 43

PIC programlamanın temelleri 3) DOSYANIN SAKLANMASI

Şekil 4-4 Dosyanın saklanması Yeni yapılan dosyanın hangi klasöre ve hangi isimde kayıt edilip saklanacağına kendin karar vererek Save as type bölümünde Assembly Source Files kısmını seçtiğimizde dosya adından sonra asm yazmamıza gerek yoktur. Program otomatik olarak atama yapar. Eski versiyonlarda bu olmadığından dolayı dosya adından sonra nokta koyup mutlaka asm uzantısını da yazmamız gerekir. Örnekte dosyamız "PROG1" adı altında saklanmıştır ve bu dosya bizim kaynak dosyamız olmaktadır.

Şekil 4-5 Dosyanın adı

44

PIC programlamanın temelleri 4) YAZILAN DOSYANIN DERLENMESİ ( Hex dosya haline getirilmesi ) Program

yazılıp

saklandıktan

sonra bunun derlenmesi gerekmektedir. Derleme işlemini iki yoldan yapmamız mümkündür. Kısa tuş kullanımını tercih edersek ALT + F10 tuşuna basmamız yeterlidir.

Menülerden

yapmak

istediğimizde ise; Project / Quickbuild kısmını takip etmeliyiz. Program yazılıp saklandıktan sonra o program içerisinde ufak

değişiklikler yapıldığında tekrar saklamak için save etmemize gerek yoktur. Derleme;

işlemine başlamadan son değişiklikleri otomatik olarak kayıt etmektedir.

Şekil 4-6

Şekil 4-7

Assembly’ nin başarılı olma penceresi

Assembly’ nin başarısız olma penceresi

Başarılı olması demek program doğru çalışır anlamına gelmemelidir. Derleme esnasında sadece komut yazılım hatası olup olmadığı kontrol edilir, mantık hatası kontrolü yapılmaz.

45

PIC programlamanın temelleri Program yazılırken iki tür dosya vardır. Giriş dosyalarından olan kaynak dosyayı kendimiz oluştururuz. Yükleme dosyasını ise hazır olandan kullanırız. ( P16F84.INC gibi.) Bu tür dosyalar MPLAB programı yüklenirken otomatik olarak gelmektedir. ( Geniş bilgi sayfa 73’ dedir. ) Çıktı dosyaları ise derleme sonucunda oluşan dosyalardır ve kaynak dosyanın bulunduğu klasörün içerisindedirler. 1. GİRİŞ DOSYALARI a. Kaynak dosya ( dosya adı.ASM ) b. Yükleme ( Include ) dosya ( dosya adı.INC ) 2. ÇIKTI DOSYALARI ( Derleme esnasında assembler tarafından üretilir ) a. Liste dosyası ( dosya adı.LST ) b. Hata dosyası ( dosya adı.ERR ) c. Sembol ve debug dosyası ( dosya adı.COD ) d. Hex formatında dosya ( dosya adı.HEX, dosya adı.HXL, dosya adı.HXH ) LİSTE DOSYASI Dosyanın hangi yazılım tarafından üretildiği, versiyonu, tarih ve saati, sayfa numarasından sonra; birinci kolonda komutların hafızadaki adreslerini, ( LOC ) ikinci kolonda set, equ, variable gibi emirlerin ve komutların oluşturduğu 32 bitte hex karşılıklarını, ( OBJECT CODE ) üçüncü kolonda kaynak program ve bunun satır numaraları ve varsa açıklamalar (LINE SOURCE TEXT) Programda kullanılan etiketler (SYMBOL TABLE) ve adresleri (VALUE) Hafıza kullanım haritası (MEMORY USAGE MAP) X

Kullanılan kısım

- Kullanılmayan kısmı gösterir

PROG1.ASM örnek programında kullanılan alan

6 kullanılmayan alan 1018’ dir.

Hata (Error) sayısı ve Uyarı (Warning) sayısı da verilmektedir. Bu uyarı ve hataların nerelerde olduğu ise açıkça komutların altlarına yazılmıştır.

46

PIC programlamanın temelleri ÖRNEK PROG1.LST DOSYASI :

Şekil 4-8

PROG1.LST Dosyası

HATA ( ERROR ) DOSYASI MPASM assembler derleme sonunda hata çıktısı olarak OUTPUT penceresinde gösterdiği kısmı ERR uzantılı bir dosyada oluşturur. Bu dosya içerisinde; programda hata varsa bunun hangi satırda olduğu ve açıklamasını buluruz. Hata yok ise bu dosyanın içeriği boştur. Örneğin hata var ise aşağıdaki gibi bir dosya oluşmuştur. Burada hatanın bulunduğu satır numarası ve ne gibi hata olduğu açıkça görünmektedir.

Hata satır no

Şekil 4-9

Hata

PROG1.ERR Dosyası

LİSTE dosyasında hata olan satırın hemen üstünde ne gibi hata olduğu açıkça yazdığından dolayı hatayı bulmak LİSTE dosyasında daha kolaydır.

47

PIC programlamanın temelleri HEX FORMATINDA DOSYA MPASM assembler derleme sonunda başarılı oldu ise kaynak dosya adında fakat uzantısı HEX olan bir dosya meydana getirir. Bu dosya bizim PIC ‘ e kayıt edeceğimiz dosyadır. Değişik formatlarda derleme yapılabilmektedir. Bunlar; Intel Hex Format

INHX8M

.hex

8 bit

Intel Split Hex Format

INHX8S

.hxl .hxh

tek çift

Intel Hex 32 Format

INHX32

.hex

16 bit

Intel HEX Format

( INHX8M )

Şekil 4-10

PROG1.HEX Dosyası

Intel HEX Format (INHX8M) aşağıdaki gibidir.. :BBAAAATTHHHH…………..HHCC BB

: İki heksedesimal sayı digiti ile bir satırdaki data sayısını gösterir.

AAAA: Dört heksedesimal sayı digiti ile ilk datanın kayıt edildiği adresi gösterir. TT

: Kayıt şeklidir

00 = Data kayıt

01 = Data kayıt sonu

HH

: İki heksedesimal sayı digiti ile 1 byte datayı gösterir.

CC

: Toplam kodu kontrol eder

( Bütün baytların toplamının ikili complementi )

Örnek ( PROG1.ASM Programı ) 0C

0000

00

831686018312860106140528

71

0C

>> 83 16 86 01 83 12 86 01 06 14 05 28 ( data numaraları 12 = 0Ch )

0000

>>

00

>> Bu satır data kayıt satırıdır.

İlk adres 0000h. dır.

83 16 86 01 83 12 86 01 06 14 05 28 >> 83 16(BSF

STATUS,5), 86 01(CLRF

PORTB) ……

( Bu hexdesimal sayı karşılıklarını PROG1.LST dosyasında Şekil 4 – 8 de görebilirsiniz. ) 71

>> 0Ch+83h+16h+86h+01h+83h+12h+86h+01h+06h+14h+05h+28h = (2)8Fh (2)8Fh nin ikili complementi >> (1)71h

48

PIC programlamanın temelleri 5) EDİTÖR AYARLARI

Açılan

Taralı bölgede

yandaki

( Gutter ) Mouse sağ

menüden

tuşa basılır

Properties seçilir

Şekil 4-11

Editör ayarları penceresinin açılması

Satır numaralarını göster

Yazı ayarları için Text Seçiniz

Şekil 4-12 Editör ayarları

49

PIC programlamanın temelleri

Yazı büyüklüğünü ve tipini seçebiliriz. Kod

sayfasının

dilini

seçebiliriz. Editörde kullanılan renk ayarlarını değiştirebiliriz.

İlk renk değerlerine geri dönmemizi sağlar.

Şekil 4-13

Yazı ( Text ) ayarları penceresinin kullanımı

Sekme ( Tab ) tuşuna basıldığında gitmesi istenen miktar

Program ilk açıldığındaki editör sayfa boyutu

Şekil 4-11 de taralı bölge olarak tanımlanan alan genişlik miktarı

Şekil 4-14

Ölçümlendirme ( Size ) ayarları penceresi

50

PIC programlamanın temelleri 6) SİMULATÖR KULLANIMI Yazılan programı elektronik ortamlarda denemek yerine yazılım olarak ta adım adım çalıştırarak kontrol edebiliriz. Böylece mantık hatamız var ise daha kolay bulma imkanımız olur. Bu işleme similasyon denmektedir. Burada bunun nasıl yapılacağını öğreneceğiz.

Şekil 4-15

Similatör için Device seçimi penceresi

Configure / Select Device seçiminden sonra açılan pencerede kullanacağımız pic çeşidi seçilir. Seçilen PIC’e göre programın neleri desteklediğini görebiliriz.

MPLAB SIM desteği varsa

similatör yapabiliriz anlamına gelmektedir. Daha sonra bunu aktif hale geçirebilmek için Debugger / Select Tool menüsünü takip ederek 3. satırdaki MPLAB SIM ‘i seçmemiz gerekir.

Şekil 4-16

Similatörü aktif hale getirilmesi

51

PIC programlamanın temelleri Son olarak yazdığımız programı derlediğimizde artık similatör çalışmaya hazır hale gelecektir. Derleme işlemi yapılmadan similatör çalışmaz.

2

3 1

Şekil 4-17

Similatör doğrulama penceresi

Similatörün aktifleştiğini yukarıda görüldüğü gibi üç şekilde anlayabiliriz. Similatör aktif olmadığında 3 numaralı kutucuk içindekiler görünmez. Similatörün çalışması esnasında bir takım değerleri görmemiz gerekmektedir. Bunlardan Özel fonksiyon registerleri görebilmek için view / Special Function Registers seçmemiz yeterli olacaktır.

Şekil 4-18

Özel fonksiyon registerlerinin ( SFR ) görüntülenmesi 52

PIC programlamanın temelleri

Eğer kendi oluşturduğumuz dosya içeriklerini veya özel fonksiyon registerlerinin bir kısmını görmek istediğimizde yanda şekilde görüldüğü gibi Watch penceresini açmamız gerekmektedir.

Şekil 4-19

Kendi

Watch penceresinin açılması

yaptığımız

ve

değişik dosyaları buradan seçebiliriz.

Özel registerlerini

Fonksiyon buradan

seçebiliriz. Şekil 4-20

Görüntülemek istediğimiz dosyaların seçilmesi

Seçim ok tuşu ile açılan kısımdan yapılmaktadır. Daha sonra sol tarafta bulunan Add SFR

veya Add Symbol ile bunu görüntü

penceresine aktarmamız gerekmektedir. Burada gelen görüntü değeri hex formatında olup Value üzerinde iken Mouse sağ tuşa basıldığında açılan pencereden hangi tipte görüntüleneceğini klik yapmamız yeterli olacaktır.

53

PIC programlamanın temelleri Şekil 4-21

Görüntüleme

özelliğinin belirlenmesi 7)

BUTON EKLENMESİ VE KULLANILMASI :

Şekil 4-22

Buton eklenmesi

Add Row ikonuna bastığımızda buton eklemek için bir bölüm açılır. Daha sonra

Pin

kısmının

altında

beliren

pinlerden bir tanesi seçilir. Action kısmında ise butonun 1 – 0 veya değiştirilebilir olacağına karar verilir. Genellikle burada toggle ile değiştirilebilen buton seçilir. Eğer bunu seçersek similasyon esnasında Fire butonuna her klik yapmamızda buton değeri; 1 ( high )

ise

0

( Low ),

0 ( Low )

ise

1

( high ) olarak

değiştirilmiş

olur.

Yapılan

bu

düzeni

istediğimizde kullanmak için saklayabiliriz. Şekil 4-23

Butonların kullanımı

Program

satırında

similasyon

esnasında durma yapmak istiyorsak ( Break ) hangi satırda duracaksa bu satır üzerinde Mouse sol tuşu iki defa klik yapılırsa sol tarafta işareti

Run

çıkacaktır.

komutu

çalıştırıldığında bu işarete kadar çalışır ve program beklemeye başlar. Eğer çift klik yapmada

bu

işaret

çıkmıyorsa

Editör

ayarlarından ( Şekil 4 – 12 ) işaretlememiz gerekir.

54

PIC programlamanın temelleri Şekil 4-24 8)

Çalışma arası verme

SİMİLATÖR İKONLARININ AÇIKLANMASI :

Run

Halt

F9

F5

Animate

Step Into

Kısa yol tuşları Şekil 4-25

F7

Step Over

Step Out

F8

Reset F6

Similatör ( Debug ) ikonları

RUN : Similasyon çalışmaya başlar, halt tuşuna basılana kadar sürer ve durdurulduğunda değerleri yazar. HALT : Program çalışmasını kesme tuşudur. Program olduğu yerde durur. ANİMATE :

Belirtilen zaman aralıklarında program satır satır otomatik olarak çalışır. Ne

kadar sürede satır çalıştıracağımızı setting kısmının Debugger animation kısmından değiştirebiliriz. STEP INTO : Bu ikonu her klik yapmada programda bir satır çalıştırılmış olur. STEP OVER : Bu ikonu her klik yapmada programda bir satır çalıştırılmış olur. Ancak CALL komutu ile çalıştırılan Altprogramları göstermez RETURN komutuna kadar otomatik çalıştırır. Program CALL ile çağrılma satırının bir altından devam eder. Örneğin CALL TIMER dediğimizde timer alt programının nasıl çalıştığını adım adım göremeyiz. STEP OUT : Eğer step into ile adım adım çalıştırılırken alt programın içerisine girilmiş ise bu ikona klik yapmayla alt programdan hemen çıkılır ve ana programda kaldığı yerden devam eder. RESET : Programı reset eder ve tekrar programın en baştan başlaması için hazır hale getirir. Bütün bu tuşlar programda Debugger menüsünün içerisinde de mevcuttur. Bu menünün en altında bulunan setting kısmından ise kullanılan osilatör hızını seçerek gerçek zamanda program similasyonu da sağlanmış oluruz.

55

PIC programlamanın temelleri (6) MPASMWIN Eğer başka bir editör kullanmışsak ( örneğin > Windows

Note

Pad).

Sadece MPASM assembler kullanabiliriz. Gerçekte de MPLAB programı derleme esnasında

MPASM’

yi

kullanmaktadır. Bu yazılım MPLAB programı

yüklenirken

bilgisayara aktarılmaktadır. Şekil 4-26

MPASMWIN bulunduğu kalasör

Yeri ise yükleme esnasında değişiklik yapılmamış ise şekil 4 - 26 deki gibidir. Bu Windows versiyonu olup DOS versiyonunda çalışanı da vardır. MPASM çalıştırıldığında şekil 4 – 27 deki pencere açılmış olur.

Önce

Browse

kısmından

kaynak dosyayı bulunuz. Daha sonra

Hex

Output

INHX8M

kısmından

işaretlememiz

gerekmektedir. kısmından

ise

Processor hangi

tür

pic

kullanıyorsak bunu da burada seçmeliyiz. Son olarak Assemble ikonuna

klik

yaptığımızda

program derlenmiş olur. Derlenen dosya kaynak dosyamız hangi klasörde oluşturulur. Şekil 4-27

MPASMWIN

56

ise

aynı

klasöre

PIC programlamanın temelleri 2

PIC yazıcı setini nasıl kullanırız ?

(1) PIC yazıcının ( writer ) kullanılması

Şekil4-28 PIC Yazıcı ve eğitim seti (2) Bağlantısı kablosunu PC’ye bağlayınız.

Desk top makinelerde Şekil 4-29

Note book makinelerde PC’ye bağlama yöntemi

57

PIC programlamanın temelleri (3) IC-PROG PROGRAMININ KULLANILMASI Bilgisayarda

çeşitli

dillerde

yazılmış

programlar

derlenerek

HEX

dosya

haline

getirilmektedir. Bu dosyaları da PIC mikrodenetleyiciye yazmamız gerekmektedir. Bunun için çeşitli devreler ve yazılımlar mevcuttur. En yaygın olarak kullanılanlardan biri de IC-PROG yazılımıdır. IC-PROG yazılımı ile PIC çeşidinin büyük bir çoğunluğunu mümkündür.

programlamamız

Bunun yanı sıra bir çok programlayıcı

devreyi de desteklemektedir. Bu kitaptaki yazıcı devresi AN589 Programmer donanımına göre yapılmıştır.

Programı çalıştırdığımızda donanım kısmından AN589 seçmemiz

gerekmektedir. Bu yazılımı kurmamıza da gerek yoktur. Herhangi bir yerden kopyalamamız veya internetten indirmemiz yeterli olacaktır. Programın internet adresi www.ic-prog.com ‘dur. 1)

YAZICI AYARININ YAPILMASI Yukarıdaki ikona çift tıkladığımızda ilk defa karşımıza İngilizce versiyonu açılır. İlk

donanım seçimi ise JDM programmer’dir. Makinemize bu ayarları bir defa yapmamız yeterli olacaktır. Kapanıp açıldığında bizim son ayarlarımız gelmektedir. Öncelikle yazıcı tipimize göre donanım ( hardware ) AN589 Programmer’ e

seçmemiz gerekmektedir. Bunun için

Setting ve Hardware menülerini takip etmemiz, F3 tuşuna basmamız veya ana sayfada tuşuna basmamız yeterli olacaktır.

Her üç yolda aynı menüyü açar.

Şekil 4-30

AN589 seçim penceresi

Setting / Hardware menüsünden Programmer için AN589 seçmemiz gerekir. Daha sonra OK ile menüdeki işlemimiz son bulmaktadır.

58

PIC programlamanın temelleri 2)

YAZILIMIN TÜRKÇELEŞTİRİLMESİ Kullandığımız olabilmesi

içinde

menüsünü

Türkçe

Setting

Options

takip

gerekmektedir. menüsünden

yazılımın

Açılan Language

etmemiz Options kısmıondan

Turkish seçilip OK ile çıkıldığında program kendini bir defa açıp kapamak suretiyle programımız artık Türkçe olmuştur. Şekil 4-31

Options ayarları

Şekil 4-32

Yazılımın Türkçe hale dönüştürülmesi

Şekil 4-33

Yazılımın Türkçe olmuş durumu

59

PIC programlamanın temelleri 3)

PIC TÜRÜNÜN SEÇİLMESİ Bu

yazılım

ve

yazıcı

devremiz

ile

bir

çok

PIC

çeşidini

rahatlıkla

programlayabilmekteyiz. Tabi ki her defasında programlamak istediğimiz PIC çeşidini bulmak zaman almakta ve sıkıcı olmaktadır. Bunu için daha önceden belirleyeceğimiz 4 adet PIC çeşidine CTRL + F1 den

CTRL + F4 e kadar kısa yol oluşturabilmek mümkündür.

Bunu gerçekleştirebilmek için Ayarlar Seçenekler menüsünü takip ettiğimizde karşımıza aşağıdaki menü çıkmaktadır. Burada Kısayollar menüsü seçilerek hangi kısa yol tuşuna

hangi PIC çeşidi atanacaksa bunlar seçilir.

Şekil 4-34

Kısa yol atamasının yapılması

Tamam ile menüden çıkıldığında kısa yol tuşlarına seçilen PIC’ ler atanmış olur ve artık sürekli onlar karşımıza çıkar. PIC çeşidi seçmenin bir başka yolu ise ana menüde aşağıdaki şekilde olduğu gibi açılan pencereden olmaktadır.

Şekil 4-35

PIC çeşidinin seçilmesi

60

PIC programlamanın temelleri 4)

KULLANILAN İŞLETİM SİSTEMİNE UYUMU SAĞLAMA IC-PROG yazılımını kullanmaya başlamadan evvel son yapacağımız ayar ise

kullanacağımız bilgisayarda kurulu olan yazılıma uyum sağlamak olacaktır. Programı eğer Windows 95 – Windows 98 – Windows 98 me gibi yazılım yüklü makinelerde kullanacaksak bunun için ayarlarında herhangi bir değişiklik yapmamıza gerek yoktur. Ancak Windows 2000 - WindowsXP – Windows NT gibi yazılım yüklü makinelerde kullanacaksak ayarlarını buna uyumlu hale getirmemiz gereklidir.

Şekil 4-36

İşletim sistemi uyumunu ayarlama

Bunun için Ayarlar Seçenekler menüsü takip ederek Karışık yazan kısmı seçmemiz daha sonra karşımıza çıkan pencerede ise NT/2000/XP kutucuğunun işaretli olması gerekmektedir. Bunu işaretleyip Tamam ile pencereyi kapattığımızda ayarların geçerli olabilmesi için program kendini bir kez açıp kapaması gerekmektedir. Tekrar açılan programda artık kullandığınız yazılım türüne uygun hale gelmiş olmaktadır.

Şekil 4-37 ayarlama

61

İşletim sistemi uyumunu

PIC programlamanın temelleri 5)

SÜRÜKLE BIRAK AYARI Kullanımı getirebilmek

daha

için

kolay

değişik

ayarlar

hale da

gerçekleştirebiliriz. Bunlardan HEX uzantılı bir

dosyayı

sürükleyerek

programımızın

üzerine bıraktığımızda açılmasını istiyorsak Ayarlar / Seçenekler / Sürükle Bırak kısmına ulaşıp buradaki kutucuğu işaretleyip Tamam ile çıkmamız yeterli olacaktır. Bu ayarı bir defa yapmamız yeterli olacaktır.

Şekil 4-38 6)

Sürükle Bırak ayarı

DOĞRULAMA AYARI Ic-prog yazılımı ile programlama gerçekleştirirken veya PIC’teki bir bilgiyi silme

esnasında

bunun

yanlışlıkla

yapılabileceğini düşünenler için doğrulama bölümünü

aktif

mümkündür.

hale

getirmemiz

Hangi durumda onaylama

istiyorsak

bunun

kutucuğunu

işaretlememiz yeterli olacaktır. Örneğin Aygıt programlanıyor kutucuğu işaretli ise ve biz yazılıma programlama komutunu uyguladığımızda aşağıdaki soruyu mutlaka sorarak doğrulama gerçekleştirir. Eğer işaretli değilse direk programlama işlemini gerçekleştirir. Şekil 4-39

Doğrulama ayarı

Şekil 4-40

62

Doğrulama penceresi

PIC programlamanın temelleri 7)

ANA MENÜDEKİ İKONLAR VE İŞLEVLERİ

Dosya Açma

Dosya kayıt etme

Seçenekler menüsünü açar

PIC’teki programı silme

Programlayıcı Seçimi

PIC’teki programı okuma

PIC’e program yazma

Aygıt doğrulaması yapar

Smartcard sihirbazı

Yazılan veya okunan programın Assembler görünümü

Yazılan veya okunan programın HEX görünümü

Programlanacak PIC türü

Osilatör seçim penceresi

Aktif olan Buffer katları. Bunlardan herhangi birini seçebiliriz.

PIC’ in kimlik numarası seklindedir. Bunu değiştirmekte mümkündür.

Yazılım programa göre bir sayı üretir. Her hangi bir değişiklik yapıldığında bu sayı da değişir. Böylece programda bir değişiklik yapıldığında yenisinin açılıp açılmadığını bu sayı ile kontrol edebiliriz veya Buffer 2’ye yazılan program okutulursa bu sayı aynı ise yazım kesin olarak doğru sonucuna varılır. 7) KARŞILAŞTIRMA YAPILMASI İki fark

var

nerelerde

program ise

ve

olduğunu

arasında bu

farkın

anlamak

istiyorsak bunu da yazılım ile karşılaştırabiliriz. Bunun için karşılaştırılacak iki programı değişik Buffer‘lara açmamız gerekir.

63

PIC programlamanın temelleri Örneğin birini BUFFER 1 ‘e diğerini ise BUFFER 2 ‘ ye açabiliriz.

Daha sonra

Tampon menüsünden karşılaştır seçilir. Karşılaştır seçildikten sonra Buffer 1 aktif olduğundan karşılaştırılacak diğer Buffer işaretlenir. Daha sonra Compare ( Karşılaştır) ikonu seçilerek karşılaştırma yapılır. Her ikisi de

aynı

yandaki

ise bilgi

mesajı gözükür.

Şekil 4-41

Karşılaştırma penceresi

Eğer programda değişiklik varsa bunu da aşağıdaki şekildeki gibi adım adım gösterebilmektedir. Örnekte 2135 ile 2145 arasındaki farkı göstermektedir. Başka değişikliler olup olmadığını anlayabilmek için ise Next tuşuna basmamız yeterli olacaktır.

Şekil 4-42

Farklı programların karşılaştırılması

8) YAZIM DOĞRULAMASI IC-Prog yazılımı PIC’ e program yazarken iki çeşit kontrol yapmaktadır. Birincisi önce bir adresi yazar, sonra onu okur ve doğrular bu işlem program yazımı bitene kadar gerçekleşir. Hata olursa hemen uyarı verir. okuyup doğrulama

İkinci bir seçenek ise tümünü PIC’ e yazar ve hepsini

yapar. Bu iki seçenek programın PIC’ e doğru yazılıp yazılmadığını

büyük ölçüde bize bildirir. Tabi ki bu işlem bize program yazma esnasında zaman harcamamıza sebep olur ve işlem süresi uzar. Ancak okuyup doğrulama yapmasını istemediğimizde daha kısa sürede işlem gerçekleşir fakat sağlıklı yazıp yazmadığı kuşkuludur.

64

PIC programlamanın temelleri Bu işlemleri yazılımda Ayarlar / Seçenekler

kısmına

girdiğimizde

karşımıza aşağıdaki gibi çıkan pencereden ayarlayabiliriz.

Şekil 4-43

Programlama doğrulama

penceresi (4) Bu programın sonuç ifadesi

PB0 yanar

Şekil 4-44

Sonuç ifadesi

65

LED

PIC programlamanın temelleri 3

Programın açıklanması

(1)

Program Listesi ve akış diyagramı INCLUDE”P16F84.INC” ;Adresleri belirten dosyayı yükle

(1)

LIST

P=16F84

;16F84 ün tanıtımını yap

(2)

BSF

STATUS,5

;Bank 1’ e geç

(3)

CLRF

TIRSB

;PORTB nin hepsini çıkış yap

(4)

BCF

STATUS,5

;Bank 0’ a geç

(5)

CLRF

PORTB

;PORTB’ nin hepsini 0 yap

(6)

BSF

PORTB,0

;PortB’ nin 0.bitini 1 yap ( LED yak )

(7)

DEVAM

;Sonsuz döngü ile programı sonlandır (8)

DEVAM GOTO END

(9) Akış Diyagramı BAŞLA

INCLUDE”P16F84.INC”

LIST

P=16F84

BSF

STATUS,5

CLRF

TRISB

BCF

STATUS,5

CLRF

PORTB

BSF

PORTB,0

GOTO

DEVAM

Adresleri yükle

PIC seçimi

Bank 1’ e geç

Port B’ nin tümü çıkış

Bank 0’ e geç

PortB’ nin hepsi 0

LED yak

Son

Şekil 4-45

Akış diyagramı

66

PIC programlamanın temelleri (2)

Yöntem şartnamesi ( Specification of processor )

LIST

P=16F84

(1)

LIST talimat dilidir. {LIST}

List opsiyonu

1) Format List

[,…,]

Örnek 2)

>>>

LIST

P=16F84,F=INHX8M,R=DEC

Açıklama Seçenek

Varsayım

Tanım

b=nnn

8

TAB boşluk sayısının tanımı

c=nnn

132

Bir satırtaki harf sayısının tanımı

f=

INHX8M

HEX dosya formatındaki çıktının tanımı

free

FIXED

Serbest form

fixed

FIXED

Sabit form

mm=ON|OFF

ON

Memory haritasının listeye yazılması

n=nnn

60

Bir sayfadaki satır sayısının tanımı

p=

None

İşlemci tanımı ( Example: P=,16F84 )

r=

HEX

Numerik değer tipi

st=ON|OFF

ON

Sembol tablosunun listeye yazılması

t=ON|OFF

OFF

Satır değiştirme < satır taşması sonucu > ON|OFF

w=0|1|2

0

Assemblerin mesaj seviye tanımı

x=ON|OFF

ON

Makro geliştirilmiştir.

ON|OFF

‘nnn’ desimal numaralarla tanımlama eklenmesidir. Tablo 4-2 Opsiyonların açıklanması

67

ON|OFF

ON|OFF

PIC programlamanın temelleri (3)

Port’un kurulumu

1) Bank seçimi PIC’i kullanmaya başlamadan önce portların kurulması ( I/O belirlenmesi ) gerekmektedir.

BAŞLA

BSF

Bank1 seçimi

STATUS,RP0

( BSF H’03,5 ) TRISA ve TRISB Portların giriş veya çıkış olarak

PORT’un kurulumu

kullanılacağının karar verildiği yerdir. BSF

Bank0 seçimi

STATUS,RP0

( BSF H’03,5 ) SON

Şekil 4-46

I/O Portun kurulumu Bank 1

Bank 0 00

INDIRECT ADDR

80

INDIRECT ADDR

01

TMR0

81

OPTION

02

PCL

82

PCL

03

STATUS

83

STATUS

04

FSR

84

FSR

05

PORTA

85

TRISA

06

PORTB

86

TRISB

87

07 08

EEDATA

88

EECON1

09

EEADR

89

EECON2

0A PCLATH

8A PCLATH

0B

8B INTCON

0C

INTCON

GPR Work memory

4F

bit 5=' 1 '

68byte bit7 bit6

bit5

RP1 RP0

STATUS register (Address 03h)

bit 5= ' 0 '

Şekil 4-47

Bank seçimi

68

PIC programlamanın temelleri PIC’in portlarının giriş/çıkış ( I/O ) belirlendiği yazmaç ( Special Function Register )( Özel fonksiyon kayıdı ) (TRISA(85h) ve TRISB(86h) olarak adlandırılır. TRIS registerleri Bank1’dedir.

Bank1’e geçiş STATUS yardımı ile olur. Statusun adresi de

(03h)’ dir.. (Şekil 4-47) Bank 1 seçimini gösterdiği örnek program aşağıdaki gibidir. BSF

STATUS,RP0

( BSF

H’03’,5 ) Bank1 seçimi (PORT ların I/O olarak kurulumu. )

BCF

STATUS,RP0

( BCF

H’03’,5 ) Bank0 seçimi

2) PORT ‘ların kurulumu (Örnek 1) PORTB nin hepsi ÇIKIŞ (form 1)

CLRF

TRISB

( CLRF H’86’ ) (form 2)

MSB 7 TRISB H'86'

PORTB H'06'

0

MOVLW

H’00’

; W register > ON

;

PA1 >> ON PB1 >> ON

;

INCLUDE DOSYASI KULLANILACAKTIR

;******************************************************************* LIST

INIT

MAIN

SKIP1

SKIP2

STP

P=16F84,R=DEC

INCLUDE”P16F84.INC”

;include dosyası

BSF

STATUS,RP0

;Bank 1 e geç

MOVLW

H’1F’

MOVWF

TRISA

;PORTA Tamamını giriş yap

CLRF

TRISB

;TRISB=0 PORTB tamamını çıkış yap

BCF

STATUS,RP0

;Bank 0 a geç

CLRF

PORTB

;PORTB yi temizle

BTFSC

PORTA,0

;PA0 basılımı?(PA0 > SKIP1(PA0 > PB0 LED yanar

MOVWF

PORTB

GOTO

MAIN

BTFSC

PORTA,1

;PA1 basılımı?

GOTO

SKIP2

;PA1 basılı değil >> SKIP2

MOVLW

H'02'

;PA1 basılı >> PB1 LED yanar

MOVWF

PORTB

GOTO

MAIN

MOVLW

H'00'

;RA0 ve RA1basılı ise >> LED ler sönük

MOVWF

PORTB

;PORTB >> 0 yap

GOTO

MAIN

GOTO

STP

END

94

PIC programlamanın temelleri (4) Akış diyagramı Başla

PORTB çıkış PORTA giriş yap

PORTB’yi temizle

PA0 : Basılımı(Low)?

Hayır

Evet PA1 : Basılımı(Low)?

Hayır

Evet PORTB bit0’daki LED

PORTB bit1’deki LED

PORTB tümünü

yak

yak

söndür

Şekil 4-74

Akış diyagramı

Alıştırma 4-11 Buton PA0 >> Basılı ON

7Segment >> 0

Buton PA1 >> Basılı ON

7Segment >> 1

Buton PA2 >> Basılı ON

7Segment >> 2

Buton PA3 >> Basılı ON

7Segment >> 3

Buton basılı değil

7Segment >> F

OFF

95

PIC programlamanın temelleri Alıştırma 4-12 Aşağıdaki şekilde görüldüğü gibi LED leri yakan bir program yapalım. > PA0 Buton basılı olduğu sürece.( gecikme 200ms )

> PA1 Buton basılı olduğu sürece.( gecikme 200ms )

96

PIC programlamanın temelleri 9

RETLW komutunun uygulaması

(1) Retlw işlem sırası PIC

işlem

sırası

”ADDWF

PCL,W”

ve

”RETLW”

komut

uygulaması

şeklindedir.

( Altprogram formu ) (2) Program 4-7 Bu program 7 segmenli ardışık LED lerin 0 dan 9 a kadar göstermesinde kullanılır. 1) W registerine 0 dan 9 a kadar olan değerler atanır ve program bunu altprogram tablosundan çağırır. (CALL SEGDAT) 2) Örneğin, W register ”1” değerine sahipken CALL SEGDAT komutu ile altprogram çalıştırılır ve program sayıcı 40h olur. 3) Sonra

ADDWF PCL,F komutunu çalıştırdığımızda program sayıcı 41h(PCL(41h) + W

register(01h)) olur. Böylece program sayıcısına +1 eklenir. Sonra program sayıcısı 42h. olarak belirlenir. 4) Program 42h’i uygular. RETLW B’00000110’ ( 7segment datası = 1 ). 5) Altprogramdan sonra gerçek programa geri döner W registeri B'00000110'. olur. 6) 7segment LED de ‘1’ görünür. CALL

SEGDAT

PC(program sayıcı) 40h

SEGDAT

ADDWF

PCL,F

;PCL( program counter ) + W >>PCL

41h

RETLW

B'00111111' ;segmen data 0

>> W (PCL+0)

42h

RETLW

B'00000110' ;segmen data 1

>> W (PCL+1)

43h

RETLW

B'01011011' ;segmen data 2

>> W (PCL+2)

44h

RETLW

B'01001111' ;segmen data 3

>> W (PCL+3)

45h

RETLW

B'01100110' ;segmen data 4

>> W (PCL+4)

46h

RETLW

B'01101101' ;segmen data 5

>> W (PCL+5)

47h

RETLW

B'01111101' ;segmen data 6

>> W (PCL+6)

48h

RETLW

B'00100111' ;segmen data 7

>> W (PCL+7)

49h

RETLW

B'01111111' ;segmen data 8

>> W (PCL+8)

4Ah

RETLW

B'01101111' ;segmen data 9

>> W (PCL+9)

97

PIC programlamanın temelleri ;******************************************** ;*

program 4-7

;*

RETLW komutunun kullanılması

;*

0 dan 9 a kadar 7segment LED kullanımı

;******************************************** LIST

P=16F84,R=DEC

INCLUDE ”P16F84.INC” COUNT1

EQU

H'10'

; MEMORY ADRESİ

COUNT2

EQU

H'11'

;

COUNT3

EQU

H'12'

;

RAM1

EQU

H'13'

;

INIT

BSF

STATUS,RP0

; Bank 1’e geç

CLRF

TRISB

; PORTB nin tamamı çıkış

BCF

STATUS,RP0

;Bank 0’a geç

CLRF

PORTB

; PORTB’yi temizle

MOVLW

D'10'

; segmen data numarası = 10

MOVWF

COUNT3

; count3 = 10

CLRF

RAM1

; RAM1 = 0

MOVF

RAM1,W

;RAM1 >> W

CALL

SEGDAT

; RAM1 data 0 dan 9’a kadar

MOVWF

PORTB

; W(segmen data) >> PORTB

CALL

TIMER

; 0.3s gecikmeyi çağır

INCF

RAM1,F

; RAM1+1 >> RAM1

DECFSZ

COUNT3,F

; COUNT3-1 >> COUNT3 = 0

GOTO

LOOP1

GOTO

LOOP

STP

GOTO

STP

SEGDAT

ADDWF

PCL,F

;PCL(program counter) + W >>PCL

RETLW

B'00111111'

;segmen data 0 >> W (PCL+0)

RETLW

B'00000110'

;segmen data 1 >> W (PCL+1)

RETLW

B'01011011'

;segmen data 2 >> W (PCL+2)

RETLW

B'01001111'

;segmen data 3 >> W (PCL+3)

RETLW

B'01100110'

;segmen data 4 >> W (PCL+4)

LOOP

LOOP1

98

PIC programlamanın temelleri RETLW

B'01101101'

;segmen data 5 >> W (PCL+5)

RETLW

B'01111101'

;segmen data 6 >> W (PCL+6)

RETLW

B'00100111'

;segmen data 7 >> W (PCL+7)

RETLW

B'01111111'

;segmen data 8 >> W (PCL+8)

RETLW

B'01101111'

;segmen data 9 >> W (PCL+9)

TIMER

;yaklaşık 0.3s zamanlayıcı

;************************************************************ ;* 1+1+150*(1+1+200*(2+2+2+1+1+2)+1+1+2)+1+2=300905us

*

;************************************************************

DLY1 DLY2

MOVLW

150

; 1clock

MOVWF

COUNT1

; 1clock

MOVLW

200

; 1clock

MOVWF

COUNT2

; 1clock

GOTO

$+1

; 2clock

GOTO

$+1

; 2clock

GOTO

$+1

; 2clock

NOP

; 1clock

DECFSZ

COUNT2,1

; 1(2)clock

GOTO

DLY2

; 2clock

DECFSZ

COUNT1,1

; 1(2)clock

GOTO

DLY1

; 2clock

RETURN

; 2clock

END Alıştırma 4-13 0 dan F’e kadar ardışık sayan ve bunu 7 segment LED displayde gösteren program yapınız ve uygulayınız.

99

PIC programlamanın temelleri 10

Buton arabirimi 2

(1) chattering Vcc Vcc to PORT 0v chattering

Şekil 4-75

Buton akımı ve PORT’un dalga formu

Şekil 4-75 tipik bir buton akımını göstermektedir. Burada PIC uygulama setinde aynı giriş akımını kullandık. LED’lerin yanmasında herhangi bir problemle karşılaşmadık. Ancak butona basma sayısına göre bir program yazacak olsaydık o zaman problemlerle karşılaşırdık. ( örneğin PA0 butonuna 5 defa bastığımızda PB0 LED’ini yakan program ) Şekilde de görüldüğü gibi butonda ( chattering ) dalgalanma meydana gelir. Çünkü mikrodenetleyicinin işletim hızı oldukça hızlıdır butona bir defa basmakla iki veya daha fazla işlem görmüş olur. (2) Alıcı ile buton uygulaması 1) Klasik tip buton devresi

Vcc H level to PORT

Vin H Vin L L level

Şekil 4-76

Klasik tip buton devresi

Bu devrede de dalgalanma ( chattering ) mevcuttur. Microdenetleyicilerde için bu atlamayı önlemek mümkündür. Bu devreyi kullanacağımızda dalgalanmayı programla önlememiz gerekir. Genellikle biz bu devreyi kullanırız ve program yardımıyla dalgalanmayı önleriz. İleri konularımızda programla dalgalanma önleme açıklanacaktır.

100

PIC programlamanın temelleri 2) Kondansatörlü buton devresi

Vcc H level Vin H

to PORT

Vin L L level

Şekil 4-77 Kondansatörlü buton devresi Şekilde kondansatör eklenmiş bir devrenin akımını görmektesiniz. Bu devre kalasik tip anahtarlama devresinden daha iyidir.

VL den VH kadar olan kısımda geçen zaman

tanımlanmamıştır. 3) Schmidt Trigger ters çeviricili devre Vcc H level Vin H to PORT

Vin L L level

Şekil 4-78 Schmidt Trigger ters çeviricili devre Eğer biz bu dalgalanmaları ( chattering ) donanımla yok etmek istiyorsak en iyi çözüm . Schmidt Trigger tersleyicisi kullanmaktır. Genellikle gürültülü devrelerde kullanılır. Alıştırma 4-14 (1) Alıştırmanın açıklanması 1)

Her butona bastığımızda LED lerin artarak yandığını sağlayan bir program yapalım.

2)

Her üç metod ile bu uygulamayı gerçekleştiriniz. (Yanlızca buton uygulama devresini kullanınız.)

3)

Bu üç yöntemde butona her basılışta LED ler aynı şekilde mi yandı ?

101

PIC programlamanın temelleri (2) Alıştırma 4-14 ( akış diyagramı )

Başla

PORTB çıkış PORTA giriş

PORTB’yi temizle

SW : Klasik tip buton devresi Hayır

PORTA >> 0

SW :Basılımı(Low)?

Kondansatörlü buton devresi PORTA >> 1

Evet

Schmidt Trigger tersleyicili buton devresi PORTA >> 2

Hayır

SW : Basılı değilmi (High)?

Evet PORTB’yi artır

Şekil 4-79

Akış diyagramı

102

PIC programlamanın temelleri (3)

buton uygulama devresi +5V

10k x 3

PIC16F84

+5v ULN2803

74HC14

PA0

PB0

PA1

PB1

PA2

PB2 PB3

+5V

PB4

10k

PB5 PB6

MCLR

PB7

OSC1

GND

300 X 8

+5v

+5V

LED x 8

OSC2

4MHz MCLR

CLOCK DATA

Şekil 4-80

Buton uygulama devresi

(4) Buton uygulama devresinin üstten görünüşü

PB7

PB6

PB5

PB4

PB3

PB2

PB1

PB0

LED x 8

ULN2803

Extension Connector

PB0 G +

PB7

PIC16F84

PA0

PA1 74HC14

RESET

PA2

Şekil 4-81

Buton uygulama devresinin üstten görünüşü

103

PIC programlamanın temelleri (5) Deneyin sonucu 1) Klasik tip buton devresi

2) Kondansatörlü buton devresi

3) Schmidt Trigger tersleyicili buton devresi

104

PIC programlamanın temelleri 11

Uygulanabilir buton programı ( Dalgalanmayı önlemek için ) Vcc H level to PORT

L level

10-30ms second reading

First reading

Şekil 4-82

Buton programı

(1) Uygulanabilir buton programında izlenecek yol 1) İlk once butonu okumak gerekir 2) Dalgalanma ( chattering ) zamanı kadar beklemeli. (10 – 30ms) 3) Tekrar butonu ikinci kez okumalı 4) Eğer butona basılı ise takip eden komut devam etmelidir.

Hayır

SW : Basılı mı?

SW1

BTFSC PORTA,0 GOTO SW1

Evet Dalgalanma süresince CALL

bekle

TIMER

(10 - 30ms)

Hayır

BTFSC PORTA,0 SW : Basılı mı?

GOTO SW1

Evet Programa devam et Şekil 4-83

Buton programının akış diyagramı

105

PIC programlamanın temelleri Alıştırma 4-15 PA0 daki butona her basılmada 7 segment LED displayi artıran program yazınız. ( Alıştırma 4-13 bakınız ve uygulanabilir buton programını kullanınız. ) PA0 7segment LED

Basılı

Basılı

Basılı

Basılı

-------

Basılı

Basılı

----

0

1

2

3

-------

F

0

----

(1) Akış diyagramını çiziniz.

(2) Programı uygulayınız.

106

PIC programlamanın temelleri 12 Mantıksal işlemler (AND,OR,XOR) (1) AND işlevi AND devresi girişlere çarpma işlemi uygulandığı bir devredir ve çıkış sadece her girişin 1 olduğu zaman 1 olur. Giriş A X B

Şekil 4-84

Çıkış

A

B

X

0

0

0

0

1

0

1

0

0

1

1

1

AND devresi

1) ANDLW W yazmacının değeri sekiz bitlik ‘k’ sabiti ile AND işlemine tabi tutulur ve sonuç tekrar W yazmacına kayıt edilir. ANDLW

k

W yazmacı 10110011

W yazmacı

k

10110000

11110000 Şekil 4-85

ANDLW komutu

2) ANDWF W yazmacı ile ‘f ’ yazmacı AND işlemine tabi tutulduğunda eğer d=0 ise sonuç W yazmacına, d=1 ise sonuç f yazmacına kayıt edilir. ANDWF

f,d

W Yazmacı d=0

10110011 FSR

d=1

11110000

W yazmacı F yazmacı 10110000

Şekil 4-86

ANDWF komutu

107

PIC programlamanın temelleri 3) Program 4-8 AND komutunu kullanarak 4 bitlik ledleri yakan program yazalım. ( yüksek olan 4 bitler daima 0 olacak ) ( Program4-5 kullanılacak ) 4) Akış diyagramı Başla

PORTB’nin tamamını çıkış yap

PORTB’yi temizle

0.1s TIMER çağır

PORTB’yi 1 artır

Wreg > 10000000

Bit7 = 1

DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) 2) PORTB >> 11000000

Bit6 = 0

DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA0) 3) PORTB >> 10100000

Bit5 = 1

DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) 4) PORTB >> 10110000

Bit4 = 1

DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) 5) PORTB >> 10111000

Bit3 = 0

DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA0) 6) PORTB >> 10110100

Bit2 = 1

DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) 7) PORTB >> 10110110

Bit1 = 0

DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA) 8) PORTB >> 10110101

Bit0 = 1

DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Dijital değer = 10110101

10110101

160

AD konvertör (3) PROGRAM YAPIMI 1) AD konvertör programının görünümü

LED(PB7 – PB0)

PA1 PIC Yazıcı

PA2 PIC

RESET

Op-amp

ULN2803

Ext connector

Fix : test değeri remove : Dış giriş

Gerilim test değeri Şekil 5-19

AD konvertör deney boardu

(a) Programın işleyişi PA1 butonuna basınız

AD dönüşümün başlaması ( LED de sonuç görülür )

AD dönüşüm devam eder ( Test değer yerini döndürün ve değişken giriş değerleri elde edin )

Şekil 5-20

AD konvertör programının işleyişi

161

AD konvertör (b) Programın akış diyagramı 1

Başla PORTA ( giriş )

Rotate right to MASK

PORTB ( çıkış )

(1bit) PORTB '41h'

/

‘d’ >> ‘64h’

/

‘T’ >> ‘54h’ gibi

Tablo 5-1 ASCII kod tablosu 2) Program mantığı a) Başlangıç biti oluşturunuz ( düşük bit ‘0 ‘ ) b) Dönerek sağa doğru bilgi bitini gönderiniz. (1 bit) c) Taşıma bitini ( carry bit ) kontrol ediniz. ( data = 0 veya 1 ) d) [ b) , c) ] şıklarını 8 kez tekrar ediniz. e) Bitiş bitini oluşturunuz. ( yüksek bit ‘1’)

170

Seri iletişim ( RS-232C ) 3) Programın akış diyagramı 1

Başla

TIMER 3.3ms

PORTA0 = Çıkış PORTA1_4 =Giriş

SCNT tamamı çıkış

BCF

STATUS,RP0

;Bank0’a geç

BSF

PORTA,0

;RS232C port A

MOVWF

SDATA

;SDATA > GOTO SW

BCF

PORTA,0

;Başlama biti >> düşük

CALL

TIMER

;3.3ms timer >> 300bps

MOVLW

8

;bilgi >> 8bit

MOVWF

SCNT

;

RRF

SDATA,F

;1 bit sağa kay

BTFSC

STATUS,C

; carry bitini kontrol et (check data bit)

GOTO

BITON

;carry bit = 1 >> goto BITON

BCF

PORTA,0

;carry bit = 0 >> PA0 bit düşük

GOTO

SND2

;BITON’u atla

BITON BSF

PORTA,0

;Eğer bilgi (data) =1

SND2

CALL

TIMER

;3.3ms timer >> 300bps

DECFSZ

SCNT,1

;Bilgi sonu?

GOTO

SND1

;bilgi sonu değilse SND1 e git

BSF

PORTA,0

;bitiş biti

SW MAIN SND

SND1

172

>> yüksek

Seri iletişim ( RS-232C ) CALL

TIMER

;3.3ms timer

CALL

TIMER

;3.3ms timer

STP

GOTO

STP

;

timer = 1+1+10*(1+1+110*(1+2)+1+2)+2 =3354us=3.4ms

TIMER

DLY1

MOVLW

D'10'

;1CLOCK

MOVWF

CNT

;1CLOCK

MOVLW

D'110'

;1CLOCK

MOVWF

CNT1

;1CLOCK

CNT1,1

;1CLOCK

GOTO

DLY11

;2CLOCK

DECFSZ

CNT,1

;1CLOCK

GOTO

DLY1

;2CLOCK

DLY11 DECFSZ

RETURN

;2CLOCK

END 5) Teraterm programını nasıl kullanırız ? 1) tterm başlatınız. Bunun için aşağıdaki ikona double click yapınız

(a) Teraterm 1

Şekil 5-34

Seri modunu seçiniz.

173

Seri iletişim ( RS-232C ) (b) Teraterm 2

Şekil 5-35

Seri portu setup yapınız.

(c) Teraterm 3

Şekil 5-36

Şekil 5-37

Baud rate seçimini yapınız.

Seri portu setup yapınız

174

Seri iletişim ( RS-232C ) 6) Programın uygulanması (a) Boardu PC ye bağlayınız. RS232C

özel

kablosu

RS232C portuna

paralel porta

Şekil 5-38

PIC Yazıcı

Uygulamanın bağlantı şeması

(b) PA2 butonuna bastığımızda kişisel bilgisayarımız ekranında ( teraterm program sayfasında ) ‘A’ harfinin görünür.

Şekil 5-39

Program uygulamasının sonucu

Alıştırma 5-15 Boud rate hızını 300 bps den 9600 bps’ye değiştirerek tekrar deneyiniz. ( Programda zamanlayıcıyı ( timer ) değiştirmeniz gerekmektedir. )

175

Seri iletişim ( RS-232C ) (3) Seri komünikasyon programı 2 1) Program 2 hakkında Klavyeden yazılan karakterin ASCII kodunu LED lerle gösteren program yapınız.

(a)

Bilgi gidiş hızı ( baud rate )

>>

9600bps

Bilgi ( data )

>>

8 bit

Bitiş biti ( stop bit )

>>

2 bit

Bilgisayar klavyesinde eğer ‘B’ harfine bastıysak,

B

(b)

Uygulama boardundaki LED lerde bu harfe karşılık gelen ASCII koduna

yanacaktır.

( ‘B’ nin ASCII kodu 42h.) Şekil 5-40

Uygulama örneğinin sonucu

2) Program mantığı Bitiş biti

Başlama biti

Bilgi ( 8bit ) LSB 0 1 52us

MSB 0

0

0 0

1 0

104us 1.144ms

Şekil 5-41

Programla sinyali okuma methodu

176

göre

Seri iletişim ( RS-232C ) (a) Başlama bitini bekler ( düşük bit ) (b) Düşük sinyal ( 0 ) geldiği zaman 52us bekler (

9600bps in bir biti 104us dir. )

( It is a position of the center of the start bit.) (c) Bir bit zamanı kadar bekler ( 104 us ) (d) Sinyali okur. ( yüksek veya düşük ) (e) Okuduğu sinyali taşımada ( Carry ) stoklar (f) Bir bit sağa doğru kayarak

hafızada biriktirir.

(g) .( (d) şıkkından (f) şıkkına kadar olan işlemleri 8 kez tekrar eder. (h) 208us bekler ( 2 bitiş biti ) (i) Depolanan bilgi LED ye çıkış olarak gönderilir. (j) İşlem baştan tekrar yapılır.

177

Seri iletişim ( RS-232C )

Başla

1

PORTA ( Giriş )

Rotate right to SDATA

PORTB ( Çıkış )

(1bit) 2 SCNT Step motor yanlızca 360 derece döner.

194

Step Motor kontrolü (3) Step motor uygulaması 2 ( Pozisyon kotrol ) 1) Foto interrupter

5v

5v

5v 200

24k

0

200

1

(a) Arada her hangi bir cisim yokken Şekil 5-53

5v 24k

1

0

(b) Arada bir cisim varken

Foto interrupter

Foto interrupter LED ile foto transistörün birleşiminden meydana gelmektedir.

Çıkışı arada

her hangi bir cisim yok iken “1” ( Şekil a ) , arada bir parça var ise “0” ( şekil b ) olmaktadır. 2) Program Yapılan bu programla sensör kontrolünü ve motor kontrolünü öğreneceğiz. Eğitim setinde iki adet sensör ile bir adet step motor kullandık. Step motorun bir adımı 7.5 derece çalışma gerilimi ise 5 -10 Volt arasındadır. İki faz sürücülüdür.

195

Step Motor kontrolü 3) Programın akış diyagramı ( Alıştırma 5-23 )

PA0 butonuna basılır.

Step motor saat yönünde döner.

Bant sola doğru hareket eder.

Parça PA4 deki foto interruptere gelince motor 1 saniye durur.

Step motor saat yönünün tersi yönde döner

Bant sağa doğru hareket eder.

Parça PA3 deki foto interruptere gelince motor 1 saniye durur.

Şekil 5-54

Programın akış diyagramı

196

Step Motor kontrolü

Foto interrupter PA4

PA3

Step motor 7.5 derece 5 – 10V

Ext connector

RESET

PIC

PIC Yazıcı

PB3 PB2 PB1

Motor gerilim Sensör

PA0 PA2

PA1

PA0 MOTOR gerilimi

Şekil 5-55

Step motor eğitim seti

197

girişi

DA motor kontrolü 8

DA MOTOR KONTROLÜ

(1) DA motorları hakkında genel bilgi 1) Transistör ve FET ile DA motor kontrolü yapabiliriz. Motor gerilimi

Motor gerilimi diyod

M

M PIC

1k

PIC

port

port

20k

(a) Transistor Şekil 5-56

(b) FET DA motor kontrol metodları

Şekil. 5-56 DA motorlarının kontrol metodları görülmektedir. Eğer PIC ‘in portundan gelen sinyal 1 ( 5V ) ise motor dönmeye başlar. Eğer PIC ‘in portundan gelen sinyal 0 ( 0V ) ise motor durur. Bu metodla motor da sadece bir yönde dönme sağlanır. 2) H köprü devresi Motorun her iki yöndede dönmesini istediğimiz zaman şekil 5-57 deki devreyi kullanmalıyız. Motor gerilimi

S1

S2

Motor gerilimi

S1

M S3

S2 S1 M

S4 S3

(a) Boşta

Motor gerilimi

Motor gerilimi

S2

S1

M S4

S3

(b) Saat yönünde

M S4

S3

(c) Saat yönünün tersi

Şekil 5-57 H köprü metod devresi

198

S2

S4

(d) Tutma ( Fren )

DA motor kontrolü

SW1 SW2 SW3 SW4 Açiklama TR1

TR2 M

TR3

TR4

Şekil 5-58

TR1

TR2

TR3

TR4

OFF

OFF

OFF

OFF

Boşta

ON

OFF

OFF

ON

Saat yönünde

OFF

ON

ON

OFF

Saat yönü tersi

OFF

OFF

ON

ON

Tutma ( Fren )

Transistörle yapılmış H köprü devresi

3) Motor sürücü Motor sürücüsü DA motorlarda devir yönü değiştirmek için tam köprü sürücüye sahiptir. Bu devre elemanı ile DA motoru saat yönünde, saat yönünün tersi yönde, boşta ve fren durumunda kolaylıkla kontrol edebiliriz. Özelliği (Motor sürücü TA7257P) (a) Çıkış akımı ortalama 1.5A , maksimum 4.5Adir. (b) 4 fonksiyon moda sahiptir.(İleri, Geri, Boşta,Fren) Bütün bunları

2

ucunu

besleyerek

2

lojik

sinyalle

gerçekleştirebiliriz (c) Aşırı akım,kısa devre ve ısıya karşı koruma vardır. (d) İşletim gerilimi : Vcc = 6 – 18V, Vs = 0 – 18V Vcc 7

Şekil 5-59

TA7257P

6 Vs

Giriş Giriş

1 2

3

kontrol

Çıkış1 5

Çıkış2

Isı koruma

4 GND

Aşırı akım koruma

Şekil 5-60

Blok diyagramı (TA7257P)

199

DA motor kontrolü PIN No. Sembol Fonksiyon Açıklaması 1

IN1

Giriş ucu

2

IN2

Giriş ucu

3

OUT1

Çıkış ucu

4

GND

Toprak ucu

5

OUT2

Çıkış ucu

6

Vs

Motor sürücüsü için gerilim ucu

7

Vcc

Lojik devrenin çalışması için gerilim ucu

Şekil 5-61

Giriş 1 Giriş 2

TA7257P’nin PIN uçları

Çıkış 1

Çıkış 2

Çalışma şekli

1

1

H

H

Fren

0

1

L

H

İleri

1

0

H

L

Geri

0

0

L

L

Boşta

TA7257P’nin

fonksiyonları

Şekil 5-62 4) DA motorlarında hız kontrolü

DA motorlarında hızı kontrol etmek için iki yöntem vardır. Bunlardan birisi gerilim kontrolü diğeri ise faz kontrolüdür.

M

Şekil 5-63 (a)

Gerilim kontrolü

Gerilim kontrolü Gerilim kontrolü analog bir kontroldür. ( Şekil 5 -63 ) Bu yöntem genel olarak kullanılan

bir metodtur. Bu metodu kullanmak için elektrik amplifikatörüne ihtiyaç vardır ancak verimli ve kullanışlı bir metod değildir. Bu metodu mikrodenetleyiciler ile kullanamayız.

200

DA motor kontrolü (b)

PWM kontrol (Faz genişlik kontrollü ) ( Pulse Width Modulation ) PWM metodu fazın genişliğini kontrol ederek motorun hızını kontrol etmektedir. PWM

yöntemi tamamen dijital bir kontroldür. ( 0/1 kontrollüdür. ) PWM ile fazın 1 veya 0 olma durumlarını kontrol ederiz ve çok kullanışlı bir metodtur. Sadece motor hızını değil lambanın yanma parlaklığınıda kontrol edebiliriz. (Şekil 5-64)

Bu alan değişmez

High Hız Low Şekil 5-64

PWM control

Motor gerilimi

M G

D S

PIC PB1 portundan

G : Gate D : Drain S : Source

20k FET(2SK2936)or (2SK3142)

Şekil 5-65

PIC ile PWM kontrolü

Şekil 5-65’de görüldüğü gibi bu şekilde DA motorunu kontrol etmek için FET ( Field Effect Transistor ) ihtiyaç vardır.. Çünkü FET’in anahtarlama özelliği iyidir ve PWM için en uygun özelliğe sahiptir.

201

DA motor kontrolü 5) DA motor ders eğitim setinin devre şeması +5V

+12v(motor)

10k x 3 +5V

+12v(motor) 7

IN1

6

2

5

M2

TA7257P IN0 PIC16F84 PA0

PB7

PA1

PB6

PA2

PB5

1

Motor Driver

3

M1

4

GND

+12v(motor)

PB4 PB3

+5V

10k

PB2 PB1 PB0

MCLR

4MHz

20k

OSC1

GND

+5V +5V

OSC2 MCLR

PA4

CLOCK

PA3

RB0/INT

2SK3142 (Nch MOS FET)

Short pin

DATA

74HC14

5v

PB1 FET(Gate)

5v

200

PB2 IN1(TA7257)

24k

PB3 IN2(TA7257)

Photo interrupter

Şekil 5-66

DA motor ders eğitim setinin devre şeması

202

DA motor kontrolü (2) Eğitim malzemesi 1) Motor eğitim malzemesi

Foto sensörü ( PA3 )

Motor

Delikli disk

Bağlantı

Sensör Bağlantı

Redüktörlü DA motor ( TSUKASA TG23A-SG

12V )

Foto sensörü (T oshiba TP507A ) Şekil 5-67

Sensörlü DA motor

2) DA motor eğitim seti Motor gerilimi

RESET

PB3

PB2 TA7257

For oscilloscope

PIC

terminal

yazıcı

DC 12V TA7257 den FET’ den

PB1 FET Sensör’den PA2 PA1 PA0

Foto interrupter girişi Pin seçimi (PA3 , PB0)

oscilloscope terminal(GND)için

Şekil 5-68

DA motor eğitim seti

203

DA motor kontrolü (3) DA motor programı 1) Program1 (Motorun FET ile bağlantısının sağlanması) ( Uygulama 5-24 ) (a) PA0 butonuna basılır

>>

Motor döner.

(b) PA1 butonuna basılır

>>

Motor durur.

Güç kaynağı

(DC 12V)

2) Program2 ( TA7257 ile motor bağlantısının sağlanması ) ( Uygulama 5-25 ) (a) Butonlara basılı değil >> Motor durur(fren modu) ve giriş butonunu bekleme (b) PA0 butonuna basılı

>> Motor saat yönünde döner CW(clockwise).

(c) PA1 butonuna basılı

>> Motor saat yönünün tersi yönde döner CCW(counter clockwise)

(d) PA2 butonuna basılı

>> Motor durur(fren modu) ve giriş butonunu bekleme.

Not : Eğer motorun dönüş yönünü değiştirmek istiyorsak once PA2 ( stop ) butonuna basılmalı daha sonra diğer butonları kullanmalıyız. Güç kaynağı

(DC 12V)

204

DA motor kontrolü

3) Program 3

( PWM programı : Motorun FET ile bağlantısının sağlanması )

DA motor şekil 5-62 deki dalga konumuna göre dönmektedir. Bir dalga boyu 7.5 ms. Dir. ON zamanı 1.5ms ve OFF zamanı 6 ms.’dir. Bu data bilgileri PB1 ucuna gönderilerek motorun dönmesi sağlanır. (a) PWM Dalgası ( PB1 )

1.5ms

6ms

7.5ms

Şekil 5-69

DA motorun PWM dalgası

(b) PWM dalgasını nasıl oluşturuz. Bir saykılın nümerik toplam değeri (250) dir. Bunun ON zamanı için (50) nümeric değer ayırırsak OFF zamanı içinde (250) – (50) = (200) nümerik değer buluruz.

PWM ON zamanı

PWM OFF zamanı

PON = 50 X 0.03ms = 1.5ms

POFF = 200 X 0.03ms = 6ms

PWM dalga zamanı Saykıl = 250 X 0.03ms =7.5ms

Şekil 5-70

Programda PWM değeri

205

DA motor kontrolü (c) Program3’ün akış diyagramı

1

Başla

PB1 Sistem zamanı ( clock )

Prescaler

1/256

1MHz

1

1

256

256

Prescaler Zaman aşımı frekansı

= 4MHz / 4 = 1MHz

15.26Hz

Timer0 counter

= 1000000Hz / 256 /256 = 15.26Hz

Cycle = 1 / 15.26 = 65.5ms Kesme bu örnekte her 65.5ms sonunda meydana gelmektedir. Eğer bir saniyelik zaman gerekli ise bu programda bu süreci 15 defa çalıştırmamız yeterli olacaktır. (1 / 0.0655 = yaklaşık 15)

Prescaler frekans(Hz) cycle(ms) 1/2

1953.12

0.5

1/4

976.56

1.02

1/8

488.28

2.04

1/16

244.14

4.1

1/32

122.07

8.2

1/64

60.04

16.7

1/128

30.52

32.8

1/256

15.26

65.5

Şekil 5-84

Prescaler ve frekans

225

Kesme ( İnterrupt ) 3) Interval zamanlayıcı ( timer ) TMR0 kesmesini kullanarak sürekli olarak belli aralıklarla sensör durumunu ( değerini ) kontrol eder. Örneğin, 50ms interval zamanlayıcı yapıldığında PIC in TMR0 ı CPU zamanı ile sayar. Sayılan bu değer aşağıdaki gibi elde edilir. Sayılan değer

= Interval zamanı / saat saykılı

(50ms X 1000) / (1 us) = 50000 sayılan değer TMR0’ın sayılan değeri = 50000 / 256 ( Prescaler değer ) TMR0’ın sayılan değeri = 195 (C3h) Bu nedenle, TMR0’ın ilkdeğeri ( FFh

1MHz T=1us

C3h = 3Ch )

1

1

256

195

20Hz T=50ms

Prescaler Timer0 sayıcısı 3Ch dan FFh a kadar sayar.

Şekil 5-85

TMR0 ile Interval zamanlayıcı

TMR0 ilk değeri set etme methodu MOVLW

H’3C’

MOVWF

TMR0

;TMR0’ın adresi 01h.

226

Kesme ( İnterrupt ) (6) Timer0 program1 Şekilde görüldüğü gibi LED lerin yanıp sönmesini sağlayan program yapalım ( Interval : 1s ) ( Eğitim boardunun üzerinde )

1) Akış diyagramı Başla

Başla Kesme bayrağını temizle

Setup timer0 Internal clock

STATUS ve W

Prescaler 1/256

yazmacını sakla

Initialize

COUNT > System clock 1MHz

;

Zaman aşımı frekansı = 1000000Hz / 256 /195 = 20.03Hz

;

Cycle = 1 / 20.03 = 49.93ms

;**************************************************************************** LIST

P=16F84,R=DEC

INCLUDE "P16F84.INC" ; include dosyası W_TEMP

EQU

H'10'

STATUS_TEMP EQU

H'11'

COUNT

EQU

H'12'

ORG

H'00'

;

GOTO MAIN ORG

H'04'

GOTO ISR MAIN BSF

STATUS,RP0

;Bank1’e geç

BCF

INTCON,GIE

;disenable intrrupt

MOVLW

B'11010111'

;internal clock , prescaler 1:256

MOVWF

OPTION_REG

;

CLRF

TRISB

;TRISB=0 PORTB tamamı çıkış

MOVLW

B'11111'

;PORTA DATA

MOVWF

TRISA

;PORTA tamamı giriş

BCF

STATUS,RP0

;Bank0’a geç

MOVLW

B'00001111'

;PORTB ilk data

230

Kesme ( İnterrupt ) MOVWF

PORTB

;PORTB data

CLRF

COUNT

MOVLW

H'3C'

;FFh – C3h = 3Ch

MOVWF

TMR0

;TMR0 > CALL DSP , veya 20 >> LOOP

CALL

DSP

;

GOTO

LOOP

CLRF

COUNT

;COUNT temizle

COMF

PORTB,F

; PORTB datayı tersleme

LOOP

DSP

RETURN ;************************************************* ; Timer0 kesme programı 04h adresinden başlar. ;************************************************* ISR

PUSH

POP

BCF

INTCON,T0IF

;kesme bayrağını temizle

MOVWF

W_TEMP

;W register değerini sakla

SWAPF

STATUS,W

;SWAP komutu Z bayrağından etkilenmez

MOVWF

STATUS_TEMP ;STATUS register değerini sakla

MOVLW

H'3C'

MOVWF

TMR0

INCF

COUNT,F

SWAPF

STATUS_TEMP,W ;STATUS register değerini geri yükle

MOVWF

STATUS

SWAPF

W_TEMP,F

SWAPF

W_TEMP,W

;TMR0 >

Lojik 0

Siyah >>

Lojik 1

Şekil 5-96

S7136’in iletken bağlantısı

238

Çizgi takip eden Robot (2) Çizgi takip eden robot 1) Çizgi takip eden robot devre şeması +5V

+5V

line sensor 7

IN2

PIC16F84

6

2

5

M2

TA7257P IN1

PA0 PA1

PB7

PA2

PB6

PA3

PB5

1

Motor Driver

3

M1

4

GND

PB4 PB3

Motor

PB2

+5V

10k

PB1 PB0

+5V

MCLR

4MHz OSC1

GND

7

+5V

IN2

OSC2

6

2

5

M2

TA7257P

MCLR

IN1 CLOCK

1

Motor Driver

PIC Writer

3

M1

4

DATA

GND 5V 1k Motor

2k IR LED

monitor LED

M

0.1uF

M

0.1uF

S7136 +5V

5V 1k 2k IR LED

monitor LED

line sensor 5V

S7136 Battery

5V 1k 2k IR LED

monitor LED S7136

Şekil 5-97

Çizgi takip eden robot devre şeması

239

Çizgi takip eden Robot 2) Çizgi takip eden robotun programı (a)

Çizgi takip eden robotun temel çalışma prensibi

a) PIC ucu ( PORT ) PORT

RA4

Bağlantı N/A

RA2 RA1

Çalıştırma butonu

N/A PORT

RA3

Çizgi sensörü

Basılı > Düşük ( Low ) Sol

RB7

RB6

RB5 RB4

Bağlantı PIC yazıcı için N/A data

clock

N/A

RA0

RB3

N/A

Orta

Sağ

RB2

RB1

RB0

Sol motor sürücü Sağ motor sürücü

N/A

IN2

IN1

IN2

IN1

b) TA7257P ( Toshiba ) Motor sürücüsünün dataları

Giriş 1 Giriş 2

Çıkış 1

Çıkış 2

MODE

1

1

H

H

Fren

0

1

L

H

İleri

1

0

H

L

Geri

0

0

L

L

Boşta

PA2

PA1

PA0

Reset PIC yazıcı

PA3 butonu PIC

Pil

Güç anahtarı PB0 PB1

PB2 PB3

TA7257P

Şekil 5-98

Motor bağlantısı

Çizgi takip eden robot

240

Çizgi takip eden Robot c) Temel program 1

( İleri hareket )

PA3 butonuna basınız Çizgi takip eden robot sadece ileri yönde hareket eder.

M

Şekil 5-99

M

Temel Program 1

;************************************************************************** ;

Çizgi takip eden robot programı 1 ( ileri yönde hareket )

;************************************************************************** ;

sensör durumu

; ;

o

;

RA2

o RA1

o RA0

; ;

beyaz>> '0' sinyali gönderildiğinde sinyal LED’i yanar.

;

siyah>> '1' sinyali gönderildiğinde sinyal LED’i yanmaz.

;

portb xxxx0101

ileri

;

portb xxxx1010

geri

;

portb xxxx1111

fren

;

portb xxxx0000

boşta

;

portb xxxx0100

sola dönüş

;

portb xxxx0001

sağa dönüş

; LIST

P=16F84,R=DEC

INCLUDE "P16F84.INC" COUNT

;include dosyası

EQU

H'10'

ORG

H'00'

;başlangıç 00h

GOTO

INISET

;

241

Çizgi takip eden Robot INISET

;Etiket BSF

STATUS,RP0

;Bank1’e geç

MOVLW

B'11111'

;11111111B >> W reg

0;OUT 1;IN

MOVWF

TRISA

;W >> trisa

MOVLW

B'00000000'

;00000000B >> W reg 0;Çıkış 1;Giriş

MOVWF

TRISB

;W >> trisb

BCF

STATUS,RP0

;Bank0’a geç

MOVLW

B'00001111'

;00001111 >> W reg

MOVWF

PORTB

;W reg >> portb

porta >> giriş portb >> Çıkış

fren

;************************************************************************* ;

ana bölüm

;************************************************************************* START

;Etiket BTFSC

PORTA,3

;switch(RA3) on ? ( Basılı mı ? )

GOTO

START

;switch off >> startta geri dön

MAIN

; Etiket MOVLW

B'00001010'

;00000101 >> W reg

MOVWF

PORTB

;W reg >> portb ileri

GOTO

MAIN

END

242

Çizgi takip eden Robot

d) Temel program 2 ( Uygulama 5-32 ) Aşağıdaki şekilde görüldüğü gibi hareketi sağlayan program yapalım PA3 butonuna basılır. İlk once çizgi takip eden robot 2 saniye ileri gidecek

2s

M

M

Daha sonra çizgi takip eden robot 2 saniye ters yöne hareket eder.

M

M

2s

Son olarakta çizgi takip eden robot 2 saniye sağa doğru döner.

M

M

Şekil 5-100

Temel program 2

243

Çizgi takip eden Robot 3) Çizgi takip eden program 1 ( Uygulama 5-33 ) Aşağıdaki şekil 5-101’de görüldüğü gibi ( PA1 ) sensörüyle tek bir siyah çizgide hareket eden bir program yapalım.

Sensör durumu

>>

Sol motor

>>

ON

Sağ motor

>>

OFF

Beyaz

Sensör durumu

>>

Sol motor

>>

OFF

Sağ motor

>>

ON

Sensör durumu

>>

Sol motor

>>

ON

Sağ motor

>>

OFF

Şekil 5-101

M

M

Siyah

M

M

White M

M

Çizgi takip eden robot program1

244

Çizgi takip eden Robot 4) Program 1 ‘in akış diyagramı

Başla

Tanımlama

Hayır

PA3 buton ON

Evet

Sol motor ON

Sensör değerini oku

PA1 : Beyaz

Hayır

Evet

Sol motor ON

Sol motor OFF

Sağ motor OFF

Sağ motor ON

Şekil 5-102

Program 1 ‘in akış diyagramı

245

Çizgi takip eden Robot Uygulama 5-34 Çizgi takip eden robot iki sensör yardımıyla ( PA0 ve PA2 ) siyah bir çizgi üzerinde aşağıdaki şekildeki gibi hareket etmelidir. ( Akış diyagramını yapınız. ) Sensör durumu >>

001

Sağa dönmeli M

M

Sensör durumu >>

011

Sağa dönmeli

M

M

Sensör durumu >>

100

Sola dönmeli M

Sensör durumu >>

M

110

Sola dönmeli M

Sensör durumu >>

M

111

İleri hareket etmeli M

Sensör durumu >>

M

000

Siyah çizgiyi bulana kadar geri gitmeli

Şekil 5-103

M

M

Çizgi takip eden program 1 246

Müzik programı 11

MÜZİK PROGRAMI

(1) Müzik programı Bizim eğitim setinde buzzer bulunmaktadır. Bu buzzer PIC’in PA3 ucuna bağlıdır. Tabiki bu ucu aynı zamanda da LED çıkışı içinde kullandığımızdan dolayı birde kalıcı tip anahtar mevcuttur. Biz müzik programını kullanmak istediğimizde bu anahtarının konumunu değiştirmemiz gerekir. Böylece PA3 ucuna Buzzer bağlanmış olur. .

5V

Buzzer

22 -- 100 Anahtar seçimi 1k 2SC1815

PA3 PORT 22k 5V 10k

Şekil 5-104

Eğitim setindeki Buzer devresi

Aşağıdaki şekilde görüldüğü gibi bir kare dalga gönderdiğimizde buzzerde dalgalı bir ses duyulur. Biz PIC programları yardımıyla bu tür ses dalgası üretebiliriz. 20000Hz) arasındadır.

Buzzer

Şekil 5-105

Müzik ( Ses ) dalgası

247

Audio frekansı (20 –

Müzik programı (2) Müzik programı 1Khz’ lik kare dalgada buzerde müzik üreten program yapalım. 1) Program çerçevesi

Başla

PA0 anahtarını açın

Buzzer ON

PA0 anahtarını kapayın

Buzzer OFF

PA3OFF PA3ON PA3OFF PA3ON 0.5ms

0.5ms

1ms

Şekil 5-106

1kHz de Buzzer

248

Müzik programı 2) Program listesi ;************************************************ ;

1Khz Buzer programı

;************************************************ LIST

P=16F84,R=DEC

INCLUDE

"P16F84.INC"

COUNT1

EQU

H'10'

COUNT2

EQU

H'11'

BSF

STATUS,RP0

;Bank1’e geç

MOVLW

B'10111'

;PORTA3 > çıkış

MOVWF

TRISA

;

MOVLW

B'00000000'

;PORTB > tamamı çıkış

MOVWF

TRISB

BCF

STATUS,RP0

;Bank0’a geç

BTFSC

PORTA,0

;PORTA butonu basılı mı?

GOTO

MAIN

;PORTA basılı değil >> bekle

BSF

PORTA,3

;PORTA bit3 on

MOVLW

D’166’

;3 x 166 = 498uS=0.5ms

MOVWF

COUNT2

;

DECFSZ

COUNT2,F

;

GOTO

LOOP1

BCF

PORTA,3

;PORTA bit3 off

MOVLW

D’166’

;3 x 166 = 498uS=0.5ms

MOVWF

COUNT2

;

DECFSZ

COUNT2,F

;

GOTO

LOOP2

GOTO

MAIN

INI

MAIN

LOOP

LOOP1

LOOP2

END

249

Müzik programı Uygulama 5-35 PA0 butonuna bastığımızda bir saniye buzzerde ses çıkaran program yapınız.

(3) Müzik program Müzik skalası ile frekansı arasındaki ilişki tablosu aşağıda görülmektedir. Biz bu frekansları kullanarak müzik yapabiliriz.

C#

C

C

C# G#

D

F#

E

D

1046.5Hz 1108.7Hz G

D#

F

G# A#

G

D#

A

B

C

E

F

1174.7Hz 1244.5Hz 1318.5Hz 1396.9Hz 1480.0Hz A

A#

B

C

1568.0Hz 1661.2Hz 1760.0Hz 1864.7Hz 1975.5Hz 2093.0Hz Şekil 5-107

F#

Müzik skalası ile frekansı arasındaki ilişki tablosu

Uygulama 5-36 Lütfen sevdiğin bir müziği PIC de programlayınız.

250

PIC komutlarının açıklanması

PIC KOMUTLARININ AYRINTILI AÇIKLAMALARI 1 2 3 4 5 6

19

ADDLW

20

ADDWF

21

ANDLW

22

ANDWF

23

BCF BSF

IORLW

IORWF MOVF MOVLW MOVWF

24

NOP

7

BTFSC

25

RETFIE

8

BTFSS

26

RETLW

9

CALL

27

10 11 12 13 14

CLRF CLRW

28

RLF

29

RRF

30

CLRWDT

31

COMF

32

DECF

RETURN

SLEEP SUBLW SUBWF

15

DECFSZ

33

SWAPF

16

GOTO

34

XORLW

17 18

35

INCF INCFSZ

251

XORWF

k

PIC komutlarının açıklanması

25

RETFIE ( Return from interrupt )

Komut

RETFIE

İşleçler

Yok

İşlem Stack Memory(TOS)

Program Sayıcı GIE bit

1 Status Etkisi

Yok

Açıklama

Kesme alt programından ana programa dönemek için kullanılır. Saat çevrimi ( Cycle ) için POPed ve TOS ( Top of Stack ) ları PC ye yüklenir. (GIE)(INTCON). (Global Interrupt Enable bit) 1 ( set ) yapılır. İki zamanlı bir komuttur.

Kelimeler

1

Saat çevrimi ( Cycle )

2

Örnek

ORG

4

BSF

PORTB,2

RETFIE Kodlama 00

0000

0000

1001

Q Çevrimi ( Q Cycle Activity ) Q1 Birincide İkincide

Kod çöz

İşlem yok

Q2 İşlem yok

İşlem yok

Q3 GIE bitini

Q4 Stacktan

set et

POP et

İşlem yok

İşlem yok

276

PIC komutlarının açıklanması

26

RETLW ( Return with Literal in W )

Komut

RETLW

k

İşleçler

0 > W (PCL+0)

RETLW

B'00000110'

;segmen data 1 >> W (PCL+1)

RETLW

B'01011011'

;segmen data 2 >> W (PCL+2)

RETLW

B'01001111'

;segmen data 3 >> W (PCL+3)

RETLW

B'01100110'

;segmen data 4 >> W (PCL+4)

RETLW

B'01101101'

;segmen data 5 >> W (PCL+5)

Kodlama 11

01xx

kkkk

kkkk

Q Çevrimi ( Q Cycle Activity ) Q1 Kod çöz

Q2

Q3

literal k sabiti

set et

oku

Birincide

GIE bitini

Q4 Stacktaki POP u W registere yaz

İşlem yok

İşlem yok

İkincide

277

İşlem yok

İşlem yok

PIC komutlarının açıklanması

27

RETURN ( Return from Subroutine )

Komut

RETURN

İşleçler

Yok

İşlem Stack Memory(TOS)

Program Counter

Status Etkisi

Yok

Açıklama

Alt programdan dönmek için kullanılır. Program sayıcıya POPed ve TOS yüklenir. Böylece program sayıcıdaki adrese geri dönülür. İki zamanlı bir komuttur.

Kelimeler

1

Saat çevrimi ( Cycle )

2

Örnek

Altprogramdan geri Saat çevrimi ( Cycle ) CALL SUB1

SUB1 DECF

f,F

RETURN Kodlama 00

0000

0000

1000

Q Çevrimi ( Q Cycle Activity ) Q1 Birincide

Kod çöz

Q2

Q3

İşlem yok

İşlem yok

Q4 Stacktan POP et.

İşlem yok

İşlem yok

İkincide

278

İşlem yok

İşlem yok

PIC komutlarının açıklanması

28

RLF ( Rotate Left f through Carry )

Komut

RLF

f,d

İşleçler

0 WDT prescaler

1 >> TO 0 >> PD

aşım (Time-out TO ) bitini bir ( set ) yapar. Watchdog Timer ( WDT ) ve önbölücü ( prescaler ) da temizlenir. İşlemciyi uyku moduna geçirir ve daha az güç harcamasını sağlar. Kelimeler

1

Saat çevrimi ( Cycle )

1

Örnek

WKesme ile uykudan uyandırma ve bir alt satırdan çalışmasına devam ettirme. SLEEP CALL

JOB

Kodlama 00

0000

0110

0011

Q Çevrimi ( Q Cycle Activity ) Q1

Q2

Q3

Q4

Kod çöz

İşlem yok

İşlem yok

Sleep’e git

281

PIC komutlarının açıklanması

31

SUBLW ( Subtract W from Literal )

Komut

SUBLW k

İşleçler

0

W register

Z=0,CY=1

k

= W register

Z=1,CY=1

k

< W register

Z=0,CY=0

; N – f >> W ;f>k

Kodlama 11

110x

kkkk

kkkk

Q Çevrimi ( Q Cycle Activity ) Q1 Kod çöz

Q2

Q3

literal k sabiti

İşlem yap

Q4 W registerine

yaz

oku

282

PIC komutlarının açıklanması

32

SUBWF ( Subtract W from f )

Komut

SUBWF

İşleçler

0
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF