30.03.2014 Views

Mikroişlemciler

Mikroişlemciler

Mikroişlemciler

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!