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.