30.03.2014 Views

Mikroişlemciler

Mikroişlemciler

Mikroişlemciler

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

YILDIZ TEKNİK ÜNİVERSİTESİ<br />

ELEKTRİK - ELEKTRONİK FAKÜLTESİ<br />

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ<br />

Mikroişlemciler<br />

2010/2011 Bahar Y.Y.<br />

Laboratuar Deney Kitabı<br />

İstanbul 2011


İçindekiler<br />

Deneyle İlgili Genel Bilgiler ve Uyarılar ................................................................................................... 1<br />

2010/2011 Bahar Y.Y. Deney Programı ................................................................................................... 1<br />

EasyPic6 Deney Setinin Tanıtımı ............................................................................................................. 2<br />

PIC16F887 μC Tanıtımı .......................................................................................................................... 11<br />

PIC16F887 Komut Seti Özeti ................................................................................................................. 21<br />

mikroC Derleyicisinin Tanıtımı .............................................................................................................. 23<br />

CCS C Derleyicisi Tanıtımı ...................................................................................................................... 24<br />

DENEY 1 : PIC Assembly Uygulaması ..................................................................................................... 26<br />

DENEY 2 : Giriş/Çıkış ve 4x4 Tuş Takımı Uygulaması ............................................................................. 29<br />

DENEY 3 : PIC16F887 Modülleri ve Kesmeler ....................................................................................... 31<br />

DENEY 4 : Kesme Kullanarak Seri (RS232 ve I 2 C) Haberleşme Uygulaması ........................................... 34<br />

DENEY 5 : GLCD ve Dokunmatik Ekran Uygulaması .............................................................................. 36<br />

Kaynaklar ............................................................................................................................................... 37<br />

Ek1 : PIC16F887 Komut Açıklamaları .................................................................................................... 38<br />

Ek2 : Proteus ile PIC Simülasyonu ......................................................................................................... 45


1<br />

Deneyle İlgili Genel Bilgiler ve Uyarılar<br />

1) Deney grupları ve tarihleri önceden duyurulacaktır.<br />

2) Her biri 2 saat sürecek olan toplam 5 deney yaptırılacaktır.<br />

3) Deneyler 2’şer kişilik gruplar halinde yapılacaktır.<br />

4) Deneyler EasyPic6 deney seti üzerinde CCS C ve mikroC derleyicileri kullanılarak C dili ve<br />

PIC-assembly dili ile yaptırılacaktır. Deneyler için ön çalışma Proteus simülasyon ortamında<br />

yapılabilir.<br />

5) Deneye gelmeden önce deney kitabının en son versiyonuna sahip olup olmadığınızı kontrol<br />

edin. Dönem boyunca deneylerde ufak değişiklikler yapılabilir.<br />

6) “Deneyden Önce Yapılacaklar “ bölümünde istenenler deneyden önce mutlaka yapılmalıdır.<br />

7) Deney sonundaki sorular deneyden önce mutlaka yanıtlandırılmaya çalışılmalıdır.<br />

8) “Deneyde Yapılacaklar”ın deney sırasında duyurulacaktır.<br />

9) Deney sırasında öğrenciler arasında bilgi alış verişi yasaktır.<br />

10) Deneyde yapılacaklardan herhangi biri bittiğinde görevliye gösterilip onay alınmalıdır.<br />

11) Yönetmelik gereğince öğrenci deneylere %80 oranında devam etmek mecburiyetindedir.<br />

Devam her deneyde yoklama yapılarak saptanacaktır.<br />

12) Öğrencinin gelmediği deneyden alacağı not sıfırdır.<br />

13) Mikroişlemciler dersi laboratuarı için telafi deneyi yaptırılmayacaktır.<br />

2011/2012 Bahar Y.Y. Deney Programı<br />

Deneyler D Blok DB21 ve DB09 nolu lablarda yapılacaktır. İlan edilen deney gruplarının deney saat ve<br />

tarihleri aşağıda verilmiştir.<br />

Deney1 Deney2 Deney3 Deney4 Deney5<br />

A (Salı DB21) 20 Mart 10 Nisan 17 Nisan 15 Mayıs 22 Mayıs<br />

B (Salı DB21) 27 Mart 3 Nisan 24 Nisan 8 Mayıs 29 Mayıs<br />

C (Çarş. DB21) 28 Mart 18 Nisan 25 Nisan 16 Mayıs 23 Mayıs<br />

D (Çarş.DB21) 4 Nisan 11 Nisan 2 Mayıs 9 Mayıs 30 Mayıs<br />

E (Çarş. DB09) 28 Mart 18 Nisan 25 Nisan 16 Mayıs 23 Mayıs


2<br />

EasyPic6 Deney Setinin Tanıtımı<br />

Deneyler sırasında EasyPic6 deney seti kullanılacaktır. EasyPic6 sistemi Microchip PIC mikro<br />

denetleyicileri için geliştirilmiş çok fonksiyonlu bir uygulama kartıdır. Kart üzerinde PIC mikro<br />

denetleyicisi ile bir dizi devre elemanlarıyla donanım arayüzü oluşturulmuştur.<br />

Kartın temel birimleri aşağıda listelenmiştir:


3<br />

1) Güç kaynağı<br />

2) USB programlama girişi<br />

3) On-board USB programlayıcı ve mikroICD gerçek zamanlı donanımsal devre içi hata ayıklayıcı<br />

(in circuit debugger)<br />

4) Sıcaklık sensor modülü<br />

5) Harici debugger girişi<br />

6) USB destekli mikro denetleyiciler için USB portu<br />

7) Analog dijital çevirici giriş modül<br />

8) PS/2 konektörü<br />

9) Onboard 2x16 karakter lcd<br />

10) Port için direnç bağlantı anahtarları,<br />

11) Port için pull-up, pull-down seçim atacı<br />

12) Giriş çıkış bağlantı pinleri<br />

13) DIP8, DIP14, DIP18, DIP20, DIP28 ve DIP40 soketler<br />

14) Dokunmatik ekran kontrolörü<br />

15) Port genişletme modülü<br />

16) 128x64 grafik LCD konektörü<br />

17) Grafik LCD zıtlık ayarı


4<br />

18) Dokunmatik ekran konektörü<br />

19) Menu tuş takımı<br />

20) 4x4 tuş takımı<br />

21) Pushbutton anahtarlar<br />

22) Pushbutton basıldığında pin giriş seviyesi seçim atacı<br />

23) Koruyucu direnç aç kapa atacı<br />

24) Reset tuşu<br />

25) Mikro denetleyici G/Ç portlarına bağlı LED’ler<br />

26) LCD zıtlık ayarı<br />

27) Karakter LCD konektörü<br />

28) RS232 haberleşme modülü<br />

Deneylerin yaptırılacağı PIC16F887 mikro denetleyicisi için programlama seviyesi seçim ucu, soket<br />

seçim ve MCLR ucu için öntanımlı ataç konumları aşağıdaki şekillerdeki gibidir. Deney sırasında bu<br />

ayarların doğru olduğundan emin olunuz.<br />

Deneylerde kullanılacak donanımsal modüllerin genel şematik yapıları aşağıda verilmiştir.


5<br />

RS232 haberleşme modülü için donanımsal olarak seri haberleşmeyi destekleyen RC6 ve RC7<br />

pinlerinin seçilmesi gerekmektedir. SW7’nin 8 numarılı anahtarı ile SW8’in 8 numaralı anahtarı on<br />

konumuna getirilmelidir. CTS ve RTS anahtarları ise kullanılmayacaktır. Deney seti ile bilgisayar<br />

arasında seri kablo ile bağlantı kurulacaktır. Bilgisayar tarafında Hyperterminal veya mikroC’nin Seri<br />

Terminal programı uygun baudrate ve gerekli ayarlar ile kullanılarak haberleşme sağlanacaktır.<br />

DS1820 entegresi 1-wire olarak isimlendirilen haberleşme protokülünü kullanan, 9bit çözünürlükte,<br />

sayısal bir sıcaklık sensörüdür. DS1820’yi kullanabilmek üzere deney setinde sıcaklık sensör<br />

konnektörü kullanılır. Mikro denetleyicide 1-wire haberleşmeyi sağlamak üzere kullanılacak uç J11<br />

atacı ile seçilir. Sıcaklık sensörü için deney seti şematiği aşağıdaki gibidir.


6<br />

Analog sayısal dönüşüm uygulaması için kullanılmak üzere set üzerinde bir adet potansiyometre<br />

bulunmaktadır.<br />

Analog değer J15 atacının uygun yerleştirilmesi ile mikro denetleyicinin RA0, RA1, RA2, RA3, RA4<br />

uçlarından birine iletilir. Analog sayısal dönüşüm yardımcı kartı için şematik aşağıdaki gibidir.<br />

Set üzerinde çıkış amaçlı olarak kullanılmak üzere herbir G/Ç ucuna bir adet LED bağlıdır. LED’ler port<br />

bazında SW9’un ilgili anahtarı ile açılıp kapatılabilir. LED’lerin anot ucu mikro denetleyici tarafına<br />

bağlı olduğundan LED’in yakılabilmesi için ilgili uca lojik 1 verilmesi gerekmektedir.


7<br />

Set üzerinde giriş amaçlı olarak kullanılmak üzere herbir G/Ç ucuna bir adet pushbuttonlar bağlıdır.<br />

J2, J17 ataçları ve SW1-SW5 anahtarlarının konumlandırılmasına göre butona basıldığında lojik 1<br />

bırakıldığında lojik 0, butona basıldığında lojik 0 bırakıldığında lojik 1 şeklinde iki farklı konfigürasyon<br />

sağlanabilir. J17 ile butona basıldığında mikro denetleyici ucunda oluşacak değer seçilirken SW1-SW5<br />

on konumunda iken J2 atacı ile tuş bırakıldığında mikro denetleyici ucunda oluşacak değer belirlenir.<br />

PortB’nin bir ucuna ilişkin pushbutton ayarlanması aşağıdaki şekillerde gösterilmiştir.


8<br />

Set üzerinde pushbuttonlardan farklı olarak iki ayrı tuş takımı sağlanmıştır. Menü tuş takımının<br />

konfigürasyonu pushbuttonlar gibi yapılmaktadır (RA0-RA5). 4x4 tuş takımı ise klasik tuş takımı<br />

konfigürasyonundadır. RD4-RD7 tuş takımını sürmek için, RD0-RD3 tuş takımını okumak için<br />

kullanılır. J4 pull-down konumunda, SW4 ilk 4 anahtar on konumunda olmalıdır.<br />

(4x4 tuş takımı sembolik)


9<br />

2x16 karakter LCD modülünün donanımsal bağlantıları 4 bitlik çalışma moduna göre yapılmıştır. LCD<br />

arka ışığı SW6’nın 8 numaralı anahtarı ile açılmakta, kontrast potansiyometresi (P4) ile netlik ayarı<br />

yapılabilmektedir. Karakter LCD için data ve kontrol uçları mikro denetleyicinin PortB uçları ile<br />

sağlanır. 2x16 karakter LCD modülü için şematik aşağıda verimiştir.


10<br />

128x64 grafik LCD arkaplan ışığı SW6’nın 8 numaralı anahtarının on konumuna getirilmesi ile açılır.<br />

Kontrast ayarı için P3 potansiyometresi kullanılır. Grafik LCD için data mikro denetleyici PortB uçları<br />

ile, kontrol ise PortD uçları sağlanır. 128x64 grafik LCD için donanımsal bağlantı aşağıdaki şekilde<br />

verilmiştir.<br />

Dokunmatik ekran paneli GLCD modülüne yapıştırılarak kullanılır. Yatayda ve dikeyde okunan iki<br />

farklı analog değer ile panel üzerinde dokunulan nokta için koordinat ADC dönüşümü ile elde edilir.


11<br />

PIC16F887 μC Tanıtımı<br />

PIC16F887 mikro denetleyicisi RISC mimarisine sahip 8 bitlik bir denetleyicidir. 35 komuta sahiptir ve<br />

dallanma (branch) komutları hariç tek çevrimlik komutlara sahiptir.<br />

PIC16F887 toplam 8192 word kapasiteli program belleğine, 368 byte SRAM veri belleğine ve 256<br />

byte EEPROM veri belleğine sahiptir. 35 G/Ç pinine, 10 adet 10 bitlik A/D kanalına, 1 adet gelişmiş<br />

CCP modülüne, 1 adet CCP modülüne, 1 adet Enhanced Universal Synchronous Asynchronous<br />

Receiver Transmitter modülüne, 1 adet Master Synchronous Serial Port modülüne, 2 adet<br />

karşılaştırma modülüne, 1 adet 8 bitlik ve 2 adet 16 bitlik Timer modülüne sahiptir.<br />

PIC16F887’ye ait uç tanımları aşağıdaki şekilde verilmiştir. Bir uca ilişkin farklı görevler SRAM veri<br />

belleğindeki özel amaçlı yazmaçlar (SFR) ile kontrol edilir.


12<br />

PIC16F887 mikrodenetleyicisi için uç tanım ve görevleri aşağıda verilmiştir. Aşağıdaki tablo<br />

incelendiğinde örneğin 3 numaralı pin uygun ayarlamalar ile ya RA1 dijital giriş çıkış ucu ya da AN1<br />

analog giriş ucu olarak kullanılabilir. Port ayar yazmaçlarının reset sonrası varsayılan değerleri gereği<br />

analog giriş olarak ayarlanabilin tüm uçlar reset sonrasında analog giriş olarak ayarlıdır. Bu sebeple 3<br />

numaralı pini dijital giriş çıkış amaçlı olarak kullanabilmek için istenen port ilk durumlandırmaları<br />

yazılımsal olarak yapılmalıdır.


13<br />

PIC16F887’ye ilişkin içyapı, aşağıda verilmiştir. Program belleği adres yolu, SRAM veri belleği adres<br />

yolu, program belleği veri yolu, SRAM veri belleği veri yolu ile EEPROM adresleme ve veri uçları şekil<br />

üzerinde işaretlenmiştir. PIC16F887’de akümülatör ve genel amaçlı yazmaç olarak W yazmacı<br />

(working register) kullanılır.


14<br />

PIC16F887’ye ilişkin program belleği organizasyonu aşağıdaki şeklide verilmiştir. Şekilde ayrıca<br />

program belleğinde reset ve kesme vektör adresleri de işaretlenmiştir. Sistem ilk başlatıldığında veya<br />

reset devresi ile reset durumu oluşturulduğunda PC ‘ye 0x0000 adres değeri yüklenir. Benzer şekilde<br />

bir kesme durumunda PC’ye 0x0004 adresi yüklenir.<br />

PC değeri PCL ve PCLATH yazmaçları ile oluşturulur. PC değerinin elde edilmesine ilişkin şekil aşağıda<br />

verilmiştir.


15<br />

SRAM veri belleğine ilişkin organizasyon aşağıda verilmiştir. Bu yapı içerisinde çevre birimlerin ayar<br />

ve kontrolleri için özel amaçlı yazmaçlar (special function registers)ve kullanıcıya sunulmuş genel<br />

amaçlı yazmaç (general purpose registers) bölgeleri bulunmaktadır.


16<br />

SRAM bölgesinde yerleştirilmiş önemli SFR yazmaçlarına ilişkin bit tanımları ve reset değerleri<br />

aşağıdaki tablo ile verilmiştir.<br />

Addr İsim Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset<br />

Değeri<br />

03h STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx<br />

05h PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xxxx xxxx<br />

06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx<br />

07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx<br />

08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx<br />

09h PORTE — — — — RE3 RE2 RE1 RE0 ---- xxxx<br />

0Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x<br />

17h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000<br />

1Fh ADCON0 ADCS1 ADCS0 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 0000 0000<br />

85h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111<br />

86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111<br />

87h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111<br />

88h TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111<br />

89h TRISE — — — — TRISE3 TRISE2 TRISE1 TRISE0 ---- 1111<br />

10Ch EEDAT EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000<br />

10Dh EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000<br />

188h ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111<br />

189h ANSELH — — ANS13 ANS12 ANS11 ANS10 ANS9 ANS8 --11 1111<br />

18Ch EECON1 EEPGD — — — WRERR WREN WR RD x--- x000<br />

– = fonksiyon atanmamış bölgeler, x = belirsiz<br />

SRAM veri belleğinin adreslenmesine ilişkin modlar doğrudan adresleme ve dolaylı adresleme olarak<br />

aşağıda verilmiştir.<br />

Doğrudan adresleme: 9 bitlik ram adresinin 7 biti instruction’dan 2 biti ise STATUS yazmacından<br />

gelir.


17<br />

//STATUS 0x03 olarak tanımlanmış ise<br />

BSF STATUS, 6<br />

BSF STATUS, 5<br />

MOVLW 0xFF<br />

MOVWF 0x0C<br />

//EECON1 SFR yazmacına 0xFF yazıldı<br />

//STATUS 0x03 olarak tanımlanmış ise<br />

BSF STATUS, 6<br />

BCF STATUS, 5<br />

MOVLW 0xFF<br />

MOVWF 0x0C<br />

//EEDAT SFR yazmacına 0xFF yazıldı<br />

Dolaylı Adresleme:9 bitlik adresin 8 biti FSR yazmacından bir biti ise STATUS yazmacından gelir.<br />

BCF STATUS, 7<br />

MOVLW 0x20<br />

MOVWF FSR<br />

NEXT : CLRF INDF //dolaylı adreslemede INDF yazmacında yazılı olan bellek gözüne erişilir<br />

INCF FSR<br />

BTFSS FSR,4<br />

GOTO NEXT //0x20 -0x2F adresleri arasındaki SRAM veri belleğini siler<br />

Yukarıda geçen adresleme modlarından farklı olarak Relative Addressing modu da<br />

desteklenmektedir.


18<br />

Yaptırılacak deneylerde kullanılacak PIC16F887 modüllerine ilişkin gerekli SFR yazmaçları ve<br />

modüllere ilişkin şematik yapı aşağıda verilmiştir.<br />

EUSART modülüne ilişkin yapı aşağıda verilmiştir.


19<br />

Anolog dijital çevrim modülüne ait yapı aşağıda verilmiştir.<br />

Capture / Compare / PWM modülüne ait yapı aşağıda verilmiştir.


20<br />

MSSP modülü için I2C fonksiyonuna ait yapısı aşağıda verilmiştir:


21<br />

PIC16F887 Komut Seti Özeti<br />

Mnemonic,<br />

Operands<br />

Description<br />

Cycles<br />

MSb<br />

14-Bit Opcode<br />

LSb<br />

Status<br />

Affected<br />

Notes<br />

BYTE-ORIENTED FILE REGISTER OPERATIONS<br />

ADDWF f, d Add W and f 1 00 0111 dfff ffff C, DC, Z 1, 2<br />

ANDWF f, d AND W with f 1 00 0101 dfff ffff Z 1, 2<br />

CLRF f Clear f 1 00 0001 lfff ffff Z 2<br />

CLRW – Clear W 1 00 0001 0xxx xxxx Z<br />

COMF f, d Complement f 1 00 1001 dfff ffff Z 1, 2<br />

DECF f, d Decrement f 1 00 0011 dfff ffff Z 1, 2<br />

DECFSZ f, d Decrement f, Skip if 0 1(2) 00 1011 dfff ffff 1, 2, 3<br />

INCF f, d Increment f 1 00 1010 dfff ffff Z 1, 2<br />

INCFSZ f, d Increment f, Skip if 0 1(2) 00 1111 dfff ffff 1, 2, 3<br />

IORWF f, d Inclusive OR W with f 1 00 0100 dfff ffff Z 1, 2<br />

MOVF f, d Move f 1 00 1000 dfff ffff Z 1, 2<br />

MOVWF f Move W to f 1 00 0000 lfff ffff<br />

NOP – No Operation 1 00 0000 0xx0 0000<br />

RLF f, d Rotate Left f through Carry 1 00 1101 dfff ffff C 1, 2<br />

RRF f, d Rotate Right f through Carry 1 00 1100 dfff ffff C 1, 2<br />

SUBWF f, d Subtract W from f 1 00 0010 dfff ffff C, DC, Z 1, 2<br />

SWAPF f, d Swap nibbles in f 1 00 1110 dfff ffff 1, 2<br />

XORWF f, d Exclusive OR W with f 1 00 0110 dfff ffff Z 1, 2<br />

BIT-ORIENTED FILE REGISTER OPERATIONS<br />

BCF f, b Bit Clear f 1 01 00bb bfff ffff 1, 2<br />

BSF f, b Bit Set f 1 01 01bb bfff ffff 1, 2<br />

BTFSC f, b Bit Test f, Skip if Clear 1 (2) 01 10bb bfff ffff 3<br />

BTFSS f, b Bit Test f, Skip if Set 1 (2) 01 11bb bfff ffff 3<br />

LITERAL AND CONTROL OPERATIONS<br />

ADDLW k Add literal and W 1 11 111x kkkk kkkk C, DC, Z<br />

ANDLW k AND literal with W 1 11 1001 kkkk kkkk Z<br />

CALL<br />

Call Subroutine Clear Watchdog<br />

10 0kkk kkkk kkkk<br />

k –<br />

2 1<br />

CLRWDT<br />

Timer<br />

00 0000 0110 0100 TO, PD<br />

GOTO k Go to address 2 10 1kkk kkkk kkkk<br />

IORLW k Inclusive OR literal with W 1 11 1000 kkkk kkkk Z<br />

MOVLW k Move literal to W 1 11 00xx kkkk kkkk<br />

RETFIE – Return from interrupt 2 00 0000 0000 1001<br />

RETLW k Return with literal in W 2 11 01xx kkkk kkkk<br />

RETURN<br />

Return from Subroutine Go into<br />

00 0000 0000 1000<br />

– –<br />

2 1<br />

SLEEP<br />

Standby mode<br />

00 0000 0110 0011 TO, PD<br />

SUBLW k Subtract W from literal 1 11 110x kkkk kkkk C, DC, Z<br />

XORLW k Exclusive OR literal with W 1 11 1010 kkkk kkkk Z<br />

1: When an I/O register is modified as a function of itself (e.g., MOVF GPIO, 1), the value used will be that value present<br />

on the pins themselves. For example, if the data latch is ‘1’ for a pin configured as input and is driven low by an external<br />

device, the data will be written back with a ‘0’.<br />

2: If this instruction is executed on the TMR0 register (and where applicable, d = 1), the prescaler will be cleared if<br />

assigned to the Timer0 module.<br />

3: If the Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second<br />

cycle is executed as a NOP.


22<br />

Field<br />

f<br />

W<br />

b<br />

k<br />

x<br />

Description<br />

Register file address (0x00 to 0x7F)<br />

Working register (accumulator)<br />

Bit address within an 8-bit file register<br />

Literal field, constant data or label<br />

Don’t care location (= 0 or 1). The<br />

assembler will generate code with x = 0. It<br />

is the recommended form of use for<br />

compatibility with all Microchip software<br />

tools.<br />

d Destination select; d = 0: store result in W,<br />

d = 1: store result in file register f. Default is<br />

d = 1.<br />

PC<br />

TO<br />

C<br />

DC<br />

Z<br />

PD<br />

Program Counter<br />

Time-out bit<br />

Carry bit<br />

Digit carry bit<br />

Zero bit<br />

Power-down bit


23<br />

mikroC Derleyicisinin Tanıtımı<br />

mikroC PIC mikrodenetleyicileri için bir C derleyicisidir.<br />

Bir proje oluşturmak ve mikro denetleyiciye yüklemek için aşağıdaki adımlar izlenir:<br />

1) mikroC programı çalıştırılarak microC IDE açılır<br />

2) Project > New Project yolu ile yeni proje penceresi açılır<br />

3) Proje ismi, yolu girildikten sonra Device menüsünden PIC16F887 seçilir<br />

4) Clock değeri olarak 8.000.000 değeri girilir<br />

5) Device Flags kısmında Default düğmesi tıklanır<br />

6) Derleyicinin oluşturduğu .c dosyasına ilgili kod yazılır<br />

7) Project > Build yolu ile proje derlenir<br />

8) Tools > me Programmer yolu ile derlenen hex dosyası mikro denetleyiciye aktarılır<br />

mikroC derleyicisi ile PIC assembly komutları kullanılmak istendiğinde asm bloğu kullanılmalıdır.<br />

unsigned myvar;<br />

void main() {<br />

myvar=0;<br />

asm {<br />

MOVLW 10<br />

MOVLW test_main_global_myvar_1<br />

}<br />

}<br />

mikroC derleyicisi üzerinde uygulama geliştirilecek mikro denetleyiciye özel veya genel uygulama<br />

kütüphanelerine sahiptir. Bu kütüphanelerin açıklamalarına mikroC IDE üzerinden Help > Help<br />

menüsünden Contents tab içerisindeki mikroC Libraries yolu ile erişilebilir.<br />

!<br />

mikroC derleyicisi ile derleme işlemi sonucunda oluşan .lst uzantılı dosya incelenerek c kodlarına<br />

karşılık üretilen PIC assembly komutları görülebilir.


24<br />

CCS C Derleyicisi Tanıtımı<br />

CCS C PIC mikro denetleyiciler için bir C derleyicisidir.<br />

Bir proje oluşturmak ve mikro denetleyiciye yüklemek için aşağıdaki adımlar izlenir:<br />

1) PIC C Compiler çalıştırılarak CCS C IDE açılır<br />

2) Project tabından Project Wizard seçilir<br />

3) Projenin kaydedileceği yol belirtilir<br />

4) PIC Wizard penceresinde General başlığı Options sekmesinde Device olarak PIC16F887 seçilir<br />

5) Oscilator Frequency olarak 8.000.000 değeri girilir<br />

6) Fuses kısmında High Speed Osc (>4mhz) seçilir<br />

7) Enable MSCLR seçeneği işaretlenir<br />

8) OK tuşu ile ayarlar onaylanır<br />

9) Derleyicinin oluşturduğu .c dosyasına ilgili kod yazılır<br />

10) IDE penceresinde Compile sekmesi altında Compile butonu tıklanarak proje derlenir<br />

11) Mikroelektronika mikroProg Suite For PIC programı çalıştırılır<br />

12) MCU Family kısmında PIC16F seçilir<br />

13) Device kısmında PIC16F887 seçilir<br />

14) File > Load Hex yolu ile derlenen hex dosyası programa yüklenir<br />

15) Write butonu ile hex kod mikro denetleyiciye yüklenir


25<br />

CCS C derleyicisi ile PIC assembly komutları kullanılmak istendiğinde asm bloğu kullanılmalıdır.<br />

void asm_function(){<br />

#asm<br />

BCF 3,6<br />

BCF 3,5<br />

MOVLW 0x11<br />

MOVWF 0x20<br />

BCF 3,6<br />

BSF 3,5<br />

MOVLW 0x33<br />

MOVWF 0x20<br />

#endasm<br />

}<br />

CCS C derleyicisinin uygulama kütüphanelerinin açıklamalarına help menüsünden erişilebilir.<br />

!<br />

CCS C derleyicisi ile derleme işlemi sonucunda oluşan .lst uzantılı dosya incelenerek c kodlarına<br />

karşılık üretilen PIC assembly komutları görülebilir.


26<br />

DENEY 1 : PIC Assembly Uygulaması<br />

Deneyden Önce Yapılacaklar<br />

PIC16F887 için program belleği word büyüklüğü nedir?<br />

PIC16F887 için program bellek boyutu toplam 114688 bit olduğuna göre kaç adet program belleği<br />

word değeri adreslenebilir?<br />

Program belleği adres yolu genişliği nedir?<br />

PIC16F887 için SRAM belleği word büyüklüğü nedir?<br />

PIC16F887 için SRAM belleği boyutu toplam 2944 bit olduğuna göre kaç adet SRAM belleği word<br />

değeri adreslenebilir?<br />

SRAM belleği adres yolu genişliği nedir?<br />

PIC16F887 için EEPROM veri belleği adres yolu ve veri yolu genişlikleri nedir? (EEPROM veri belleği<br />

boyutu toplam 2048 bit)<br />

Deneyde kullanılacak SFR yazmaçlarını inceleyiniz. (Daha detaylı bilgi için 16F887 kataloguna bakınız)<br />

Verilen örnek soru 1 şablon kodunu derleyerek Proteus’ta 16F887 için hex kodu olarak kullanılacak<br />

şekilde ayarlayın. Proteus’u debug modda başlatarak, PIC16F887 için reset adresi not edin.<br />

Örnek soru 1 şablon kodu derleyip Proteus’u debug modda çalıştırarak main fonksiyonun adresini<br />

bulun. Resetten itibaren main fonksiyonuna dallanma adımlarını inceleyin. Derleme sonucu oluşan<br />

*.lst uzantılı dosyayı inceleyin.<br />

Örnek soru 1 şablon kodunda istenen değişikliği gerçekleyin: PIC16F887’nin SRAM veri belleğinde<br />

bank1 ofset 0x20 adresindeki değerin 5. Biti 0 ise bank3 ofset 20 adresine 0, 5. Bit 1 ise bank2 ofset<br />

20 adresine 1 yazan programı PIC assembly komutları ile gerçekleyin. . Kodu CCS C derleyicisi ile<br />

derleyerek ilgili Proteus simülasyonunda çalıştırın.<br />

Örnek soru 2 şablon kodunda istenen değişikliği gerçekleyin: PIC16F887’nin EEPROM veri belleği<br />

bölgesindeki ilk 3 word’u (0x00, 0x01, 0x02 adreslerindeki) okuyup SRAM veri belleği bölgesinde<br />

bank3 ofset 0x20 adresinden itibaren yazan programı PIC assembly komutları ile oluşturun. Kodu CCS<br />

C derleyicisi ile derleyerek ilgili Proteus simülasyonunda çalıştırın.<br />

Deney İçin Önemli Yazmaçlar:<br />

STATUS REGISTER<br />

ALU biriminin aritmetik durumunu, reset durumunu ve bank seçin bitlerini içerir.<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

IRP RP1 RP0 ̅̅̅̅ ̅̅̅̅ Z DC/ ̅ C/ ̅̅̅̅<br />

Bit7 Dolaylı adresleme bank seçim biti<br />

0 = bank0 ve bank1<br />

1 = bank2 ve bank3


27<br />

Bit<br />

Bit2<br />

Bit1<br />

Bit0<br />

Doğrudan adresleme bank seçim bitleri<br />

00 = bank0<br />

01 = bank1<br />

10 = bank2<br />

11 = bank3<br />

sıfır bayrağı<br />

0 = aritmetik veya lojik işlem sonucu 0 değil<br />

1 = aritmetik veya lojik işlem sonucu 0<br />

toplama basamak eldesi (düşük anlamlı 4. bitten elde oluştu), çıkarma eldesi<br />

toplama eldesi (en yüksek anlamlı bitten elde oluştu), çıkarma basamak eldesi<br />

ANSEL ve ANSELH REGISTER<br />

A ve E portları için analog-dijital i/o seçim bitleri. (ANSEL)<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0<br />

Bit Analog seçim bitleri; AN0-AN7 uçları için dijital I/O veya analog seçim ucu<br />

1 = Analog giriş<br />

0 = Dijital I/O<br />

B portu için analog-dijital i/o seçim bitleri. (ANSELH)<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

ANS13 ANS12 ANS11 ANS10 ANS9 ANS8<br />

Bit Analog seçim bitleri; AN0-AN7 uçları için dijital I/O veya analog seçim ucu<br />

1 = Analog giriş<br />

0 = Dijital I/O<br />

Analog veya dijital i/o olarak ayarlanabilecek uçlar ve karşılık gelen dijital i/o ve analog uç tanımları<br />

aşağıdaki gibidir. Analog giriş olarak ayarlanabilir tüm uçlar reset varsayılan değerleri gereği analog<br />

giriş ayarlı olarak ilk değer alırlar. İlgili uçlar dijital i/o için kullanılacaksa istenen ilk değerler yazılımsal<br />

olarak verilmelidir.<br />

EECON1 : EEPROM CONTROL REGISTER<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

EEPGD WRERR WREN WR RD<br />

Bit7 Program/Data EEPROM seçim biti<br />

0 = Veri belleğine erişim<br />

1 = program belleğine erişim<br />

Bit3 EEPROM hata bayrağı<br />

0 = Yama işlemi kesildi<br />

1 = Yazma işlemi başarılı<br />

Bit2 EEPROM yazma izin biti<br />

0 = Veri EEPROM’a yazmayı engelle<br />

1 = Yazma çevrimini aktif yap


28<br />

Bit1<br />

Bit0<br />

Yazma kontrol biti<br />

0 = EEPROM’a yazma çevrimi başarı ile tamamlandı<br />

1 = Yazma çevrimini başlat<br />

Okuma kontrol biti<br />

0 = Okuma başlatılmasın<br />

1 = Okuma çevrimini başlat<br />

EEADR : EEPROM ADDRESS REGISTER<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0<br />

Bit EEPROM okuma yazma işlemlerinde adres tutan yazmaç<br />

EEDAT : EEPROM DATA REGISTER<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0<br />

Bit EEPROM okuma yazma işlemlerinde veri tutan yazmaç<br />

Deney Sırasında Yapılacaklar<br />

SORULAR DENEY SIRASINDA VERİLECEKTİR<br />

Deney Sonu Soruları<br />

PIC16F887 mikro denetleyicisinin EEPROM ve SRAM veri bellekleri hangi amaçla kullanılır?<br />

Az sayıda komuta sahip olan ve bu komutların çoğunu kısa çevrim sürelerinde tamamlayacak şekilde<br />

oluşturulmuş işlemci mimarilerine verilen isim nedir?<br />

Veri belleği ile program belleğinin ayrı olduğu işlemci mimarilerine verilen isim nedir?<br />

Veri belleği ile program belleğinin ayrı olmasının avantaj ve dezavantajları nelerdir?


29<br />

DENEY 2 : Giriş/Çıkış ve 4x4 Tuş Takımı Uygulaması<br />

Deneyden Önce Yapılacaklar<br />

Giriş uygulamalarında düğme/buton/anahtar kullanımında debounce kavramını açıklayın. Yazılımsal<br />

olarak debounce uygulaması için bir yöntem belirtin ve açıklayın.<br />

4x4 tuş tarama mantığını araştırın. (4x4 keypad)<br />

Deneyde kullanılacak SFR yazmaçlarını inceleyiniz. (Daha detaylı bilgi için 16F887 kataloguna bakınız)<br />

Örnek soru1 için Proteus simülasyonunu açın ve simülasyonu başlatın. Önceden derlenerek<br />

simülasyon ile sağlanan bir hex kodun çalışması sonucu PORTD’de kayan ışık uygulaması sonucunu<br />

gözlemleyin. Örnek soru1 şablon kodunda gerekli değişikliği yapın: kayan ışık uygulamasını PIC<br />

assembly komutları ile gerçekleyin.<br />

Örnek soru2 için verilen şablon kod için gerekli değişikliği yapın: butonlardan SW1 için sadece<br />

basıldığı anda PORTD’deki tüm ledleri yakan, butonlardan SW2 için sadece buton bırakıldığında<br />

PORTD’deki tüm ledleri söndüren programı PIC assembly komutları ile gerçekleyin.<br />

Örnek soru3 için Proteus simülasyonunu açın ve simülasyonu başlatın. Önceden derlenerek<br />

simülasyon ile sağlanan bir hex kodun çalışması sonucu 7 parça göstergede “4321” yazdırılmasını<br />

gözlemleyin. Örnek soru3 şablon kodunda gerekli değişikliği yapın: 7 parçalı göstergede numaranızın<br />

son 4 basamağını yazdıracak PIC assembly kodunu gerçekleyin.<br />

Deney İçin Önemli Yazmaçlar:<br />

PORTx : PORTx REGISTER (x : A, B, C ve D, E için geçerli)<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0<br />

Bit PORTx G/Ç ucu<br />

0 = Port ucuna lojik 0 yaz<br />

1 = Port ucuna lojik 1 yaz<br />

TRISx : PORTx TRISTATE CONTROL REGISTER (x : A, B, C ve D, E için geçerli)<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

TRISx7 TRISx6 TRISx5 TRISx4 TRISx3 TRISx2 TRISx1 TRISx0<br />

Bit PORTx tristate kontrol bitleri<br />

0 = Ucu çıkış olarak ayarla<br />

1 = Ucu giriş olarak ayarla<br />

Deney Sırasında Yapılacaklar:<br />

SORULAR DENEY SIRASINDA VERİLECEKTİR


30<br />

Deney Sonu Soruları<br />

Mikro denetleyicinin dış dünya ile iletişimi neden portlar aracılığı ile yapılırken veri/adres yolları ile<br />

yapılmaz?<br />

0-9 arasındaki rakamları gösterebilmek için ortak katotlu ve ortak anotlu 7 parçalı göstergeye hangi<br />

değerler gönderilmelidir, aşağıdaki tabloyu tamamlayın.<br />

Ortak Anotlu<br />

Ortak Katotlu<br />

g f e d c b a g f e d c b a<br />

0<br />

1 0 0 0 0 1 1 0<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7 1 1 1 1 0 0 0<br />

8<br />

9


31<br />

DENEY 3 : PIC16F887 Modülleri ve Kesmeler<br />

Deneyden Önce Yapılacaklar:<br />

PIC16F887 mikrodenetleyicisi için PORTB, Timer 1, ADC ve CCP2 modüllerinin yapısını ve ilgili<br />

yazmaçlarını inceleyin. Bu modüllerin kullanım alanlarını ve amaçlarını araştırın.<br />

Kesme kavramını araştırın. PIC16F887 için farklı kesme kaynaklarını inceleyerek listeleyin. Dış kesme<br />

(INT RB0 ile ilgili), Timer 1 kesmesi, ADC kesmesi, CCP2 kesmesi ile ilgili yazmaç ve bitleri görevlerini<br />

açıklayarak listeleyin.<br />

Deney 3 CCS C derleyicisi ve C dili kullanılarak gerçekleştirilecektir. Aşağıda bu derleyici için çeşitli<br />

modüllere ait kütüphaneler verilmiştir, inceleyin.<br />

CCS ADC Kütüphanesi<br />

SET_ADC_CHANNEL( )<br />

SETUP_ADC_PORTS( )<br />

SETUP_ADC(mode )<br />

mode- Analog to digital mode. The valid options vary depending on the device. See the devices<br />

.h file for all options. Some typical options include:<br />

<br />

<br />

<br />

ADC_OFF<br />

ADC_CLOCK_INTERNAL<br />

ADC_CLOCK_DIV_32<br />

READ_ADC( )<br />

ADC_DONE<br />

#device ADC=x<br />

CCS CCP Kütüphanesi<br />

SET_PWM1_DUTY( )<br />

SETUP_CCP1(mode)<br />

mode is a constant. Valid constants are in the devices .h file and are as follows:<br />

Disable the CCP:<br />

CCP_OFF<br />

Set CCP to PWM mode:<br />

CCP_PWM Enable Pulse Width Modulator<br />

SET_PWM2_DUTY( )<br />

SETUP_CCP2( )


32<br />

CCS Timer Kütüphanesi<br />

SET_TIMER0( )<br />

SETUP_TIMER_0( )<br />

mode may be one or two of the constants defined in the devices .h file.<br />

<br />

<br />

RTCC_INTERNAL, RTCC_EXT_L_TO_H or RTCC_EXT_H_TO_L<br />

RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32, RTCC_DIV_64,<br />

RTCC_DIV_128, RTCC_DIV_256<br />

One constant may be used from each group or'ed together with the | operator<br />

<br />

SET_TIMER1( )<br />

SETUP_TIMER_1(mode)<br />

mode values may be:<br />

T1_DISABLED, T1_INTERNAL, T1_EXTERNAL, T1_EXTERNAL_SYNC<br />

T1_CLK_OUT<br />

T1_DIV_BY_1, T1_DIV_BY_2, T1_DIV_BY_4, T1_DIV_BY_8<br />

constants from different groups may be or'ed together with |<br />

SET_TIMER2( )<br />

SETUP_TIMER_2(mode, period, postscale )<br />

mode may be one of:<br />

<br />

T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16<br />

period is a int 0-255 that determines when the clock value is reset,<br />

postscale is a number 1-16 that determines how many timer overflows before an interrupt: (1<br />

means once, 2 means twice, and so on).<br />

SET_TRIS_A( )<br />

SET_TRIS_B( )<br />

SET_TRIS_C( )<br />

SET_TRIS_D( )<br />

INPUT_A( )<br />

INPUT_B( )<br />

INPUT_C( )<br />

INPUT_D( )<br />

OUTPUT_A( )<br />

OUTPUT_B( )<br />

OUTPUT_C( )<br />

OUTPUT_D( )<br />

OUTPUT_TOGGLE( )<br />

DELAY_MS( )<br />

DELAY_US( )<br />

CCS I/O Kütüphanesi<br />

CCS Delay Kütüphanesi


33<br />

Deney sırasında gerekli PWM periyot, duty ve çözünürlük hesapları aşağıda verilmiştir:<br />

[( )] ( )<br />

( ) ( )<br />

[ ( )]<br />

Darbe genişliği en fazla PWM periyodu kadar olabileceği için duty değeri olarak yazılabilecek anlamlı<br />

en büyük değer DarbeGenişliği=PWMPeriyot alınarak hesaplanabilir. değeri mikro<br />

denetleyicinin çalışma periyodudur. Deneylerde 8 MHz’lik çalışma frekansı kullanılmaktadır.<br />

Deney Sırasında Yapılacaklar<br />

SORULAR DENEY SIRASINDA VERİLECEKTİR<br />

Deney Sonu Soruları<br />

Donanımsal modüllerin (CCP, Timer gibi) gerekli ayarları yapıldıktan sonra çalışmaları sırasında<br />

komut yürütülmesine etkileri nedir? Soruyu 5 saniyede bir RA0 pinine bağlı LED’i toogle eden bir<br />

program parçasını Timer modülü ile ve yazılımsal gecikme ile yaptığınız durumda karşılaştırarak<br />

açıklayın.<br />

Aşağıda verilen analog işaret için 3 bitlik çözünürlükte 1 saniye periyot ile örnekleyin. Sonucu<br />

aşağıdaki grafikte çizin.


34<br />

DENEY 4 : Kesme Kullanarak Seri (RS232 ve I 2 C) Haberleşme Uygulaması<br />

Deneyden Önce Yapılacaklar:<br />

RS232 ve I2C haberleşme protokolleri için anlamlı elektriksel seviyeleri alıcı ve verici tarafları için<br />

araştırın. (Örneğin RS 232’deverici tarafı lojik 0 elektriksel olarak -5:-15 aralığı kabul edilir.)<br />

RS232 ve I2C haberleşme protokolleri için gerekli minimum bağlantı sayısı ve uç tanımlarını araştırın.<br />

Aşağıda verilen RS232 haberleşme protokolü örnek veri çerçevesi için format tanımlarını araştırın:<br />

baud hızı, veri biti sayısı, eşlik cinsi, durdurma biti sayısı kaçtır. D1 veri için LSB mi yoksa MSB midir?<br />

104s<br />

D1<br />

Boşta Start Data Parity Stop Boşta<br />

I2C haberleşme protokolü için başla, dur, masterslave yönlü haberleşme, slavemaster yönlü<br />

haberleşme koşulları aşağıda verilmiştir inceleyin:<br />

RS232 ve I2C haberleşmesi ile ilgili 16F887 SFR yazmaçlarını inceleyin.<br />

8583 RTC entegresi katalog bilgilerini inceleyin.<br />

CCS C derleyicisi için seri haberleşme kesmesi kullanımı için kullanılabilecek kod şablonu aşağıda<br />

verilmiştir.


35<br />

#include "main.h"<br />

#INT_RDA<br />

void rda_isr(){<br />

//RS232 seri veri alma kesmesi oluştuğunda bu fonksiyon çağrılır<br />

}<br />

#INT_TBE<br />

void tbe_isr(){<br />

//RS232 seri veri gönderme kesmesi oluştuğunda bu fonksiyon çağrılır<br />

}<br />

void main(){<br />

enable_interrupts(GLOBAL);//kesmeleri aç<br />

enable_interrupts(INT_RDA);//RS232 seri veri alma kesmesini aç<br />

enable_interrupts(INT_TBE);//RS232 seri veri gönderme kesmesini aç<br />

}<br />

PC8583 entegresi için örnek bir bağlantı şekli aşağıda verilmiştir.<br />

Deney Sırasında Yapılacaklar:<br />

SORULAR DENEY SIRASINDA VERİLECEKTİR


36<br />

DENEY 5 : GLCD ve Dokunmatik Ekran Uygulaması<br />

Deney Sırasında Yapılacaklar:<br />

SORULAR DENEY SIRASINDA VERİLECEKTİR


37<br />

Kaynaklar<br />

16F887 katalog bilgisi : http://ww1.microchip.com/downloads/en/DeviceDoc/41291E.pdf<br />

EasyPic6 kullanma kılavuzu:<br />

http://www.mikroe.com/eng/downloads/get/311/easypic6_manual_v100.pdf<br />

mikroProg kullanma kılavuzu :<br />

http://www.mikroe.com/eng/downloads/get/1265/mikroprog_manual_v100.pd0f<br />

8583 RTC katalog bilgisi : http://www.datasheetcatalog.org/datasheet/philips/PCF8583_5.pdf


Ek1 : PIC16F887 Komut Açıklamaları<br />

38


45<br />

Ek2 : Proteus ile PIC Simülasyonu<br />

Proteus’ta ISIS programı devre simülasyonu için, ARES programı ise baskı devre hazırlamak için kullanılır. Proteus<br />

ISIS ile PIC simülasyonu yapabilmek için aşağıdaki adımlar izlenmelidir.<br />

ISIS programı çalıştırıldıktan sonra, sırası ile işaretlenen düğmeler tıklanarak aygıt seçim penceresi açılır.<br />

Aygıt seçim penceresinde keywords kutusuna doğrudan kullanılacak aygıt adı yazılarak veya category<br />

penceresinden başlık seçilerek istenen aygıt aranır. Arama sonuçları results penceresinde listelenir. İstenen Aygıt<br />

seçilerek OK düğmesine basılarak aygıt program aygıt penceresine eklenir.<br />

Program aygıtlar penceresinden PIC16F887 aygıtı seçilerek deney ortamına eklenir.


46<br />

Deney ortamında aygıta ilişkin ayarlamaları yapmak üzere aygıt özellikleri menüsüne aygıt üzerinde iken sağ<br />

Mouse tuşu ile açılan menüden girilir.<br />

Aygıt özelliklerinde Processor Clock Frequency 8MHz olarak ayarlanmalıdır.


47<br />

Program File olarak derlediğiniz koda ilişkin .cof uzantılı dosyanın yolunu göstermelisiniz. .cof uzantılı dosyanın<br />

bulunduğu klasörde .c, .h vb. kaynak kodların olduğundan emin olun.<br />

Aygıt özellikleri menüsünü OK ile geçtikten sonra debug işlemini pause düğmesi<br />

düğmesine basılması ile kod penceresi ve değişkenler penceresi açılır.<br />

ile başlatılır. Pause


49<br />

PIC16F887 üzerinde iken sağ Mouse tuşu ile PIC CPU menüsünden yazmaçlar, veri belleği, program belleği,<br />

EPROM veri belleği, stack, kaynak kod ve değişkenler pencereleri açılabilir.


50<br />

Kaynak kod penceresinde yer alan run, step over, step into, step out, run to cursor ve toogle breakpoint<br />

düğmeleri ile debug işlemi gerçekleştirilir.<br />

Kaynak kod üzerinde breakpoint eklenebilir.<br />

Aşağıda kaynak kodda işaretli satıra kadar adım adım çalıştırma sonucu veri belleğinde değişen içerik<br />

görülmektedir.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!