Pic 16f84 Mikrodenetleyici
September 17, 2017 | Author: Ünal Vuruş | Category: N/A
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