Professional Documents
Culture Documents
Mikroilemciler
2010/2011 Bahar Y.Y. Laboratuar Deney Kitab
stanbul 2011
indekiler Deneyle lgili Genel Bilgiler ve Uyarlar ................................................................................................... 1 2010/2011 Bahar Y.Y. Deney Program................................................................................................... 1 EasyPic6 Deney Setinin Tantm ............................................................................................................. 2 PIC16F887 C Tantm .......................................................................................................................... 11 PIC16F887 Komut Seti zeti ................................................................................................................. 21 mikroC Derleyicisinin Tantm .............................................................................................................. 23 CCS C Derleyicisi Tantm ...................................................................................................................... 24 DENEY 1 : PIC Assembly Uygulamas ..................................................................................................... 26 DENEY 2 : Giri/k ve 4x4 Tu Takm Uygulamas............................................................................. 29 DENEY 3 : PIC16F887 Modlleri ve Kesmeler ....................................................................................... 31 DENEY 4 : Kesme Kullanarak Seri (RS232 ve I2C) Haberleme Uygulamas ........................................... 35 DENEY 5 : GLCD ve Dokunmatik Ekran Uygulamas .............................................................................. 38 Kaynaklar............................................................................................................................................... 39 Ek1 : PIC16F887 Komut Aklamalar .................................................................................................... 40 Ek2 : Proteus ile PIC Simlasyonu ......................................................................................................... 47
1) G kayna 2) USB programlama girii 3) On-board USB programlayc ve mikroICD gerek zamanl donanmsal devre ii hata ayklayc (in circuit debugger) 4) Scaklk sensor modl 5) Harici debugger girii 6) USB destekli mikro denetleyiciler iin USB portu 7) Analog dijital evirici giri modl 8) PS/2 konektr 9) Onboard 2x16 karakter lcd 10) Port iin diren balant anahtarlar, 11) Port iin pull-up, pull-down seim atac 12) Giri k balant pinleri 13) DIP8, DIP14, DIP18, DIP20, DIP28 ve DIP40 soketler 14) Dokunmatik ekran kontrolr 15) Port geniletme modl 16) 128x64 grafik LCD konektr 17) Grafik LCD ztlk ayar
4 18) 19) 20) 21) 22) 23) 24) 25) 26) 27) 28) Dokunmatik ekran konektr Menu tu takm 4x4 tu takm Pushbutton anahtarlar Pushbutton basldnda pin giri seviyesi seim atac Koruyucu diren a kapa atac Reset tuu Mikro denetleyici G/ portlarna bal LEDler LCD ztlk ayar Karakter LCD konektr RS232 haberleme modl
Deneylerin yaptrlaca PIC16F887 mikro denetleyicisi iin programlama seviyesi seim ucu, soket seim ve MCLR ucu iin ntanml ata konumlar aadaki ekillerdeki gibidir. Deney srasnda bu ayarlarn doru olduundan emin olunuz.
5 RS232 haberleme modl iin donanmsal olarak seri haberlemeyi destekleyen RC6 ve RC7 pinlerinin seilmesi gerekmektedir. SW7nin 8 numarl anahtar ile SW8in 8 numaral anahtar on konumuna getirilmelidir. CTS ve RTS anahtarlar ise kullanlmayacaktr. Deney seti ile bilgisayar arasnda seri kablo ile balant kurulacaktr. Bilgisayar tarafnda Hyperterminal veya benzeri bir program uygun baudrate ve gerekli ayarlar ile kullanlarak haberleme salanacaktr.
DS1820 entegresi 1-wire olarak isimlendirilen haberleme protokln kullanan, 9bit znrlkte, saysal bir scaklk sensrdr. DS1820yi kullanabilmek zere deney setinde scaklk sensr konnektr kullanlr. Mikro denetleyicide 1-wire haberlemeyi salamak zere kullanlacak u J11 atac ile seilir. Scaklk sensr iin deney seti ematii aadaki gibidir.
6 Analog saysal dnm uygulamas iin kullanlmak zere set zerinde bir adet potansiyometre bulunmaktadr.
Analog deer J15 atacnn uygun yerletirilmesi ile mikro denetleyicinin RA0, RA1, RA2, RA3, RA4 ularndan birine iletilir. Analog saysal dnm yardmc kart iin ematik aadaki gibidir.
Set zerinde k amal olarak kullanlmak zere herbir G/ ucuna bir adet LED baldr. LEDler port baznda SW9un ilgili anahtar ile alp kapatlabilir. LEDlerin anot ucu mikro denetleyici tarafna bal olduundan LEDin yaklabilmesi iin ilgili uca lojik 1 verilmesi gerekmektedir.
Set zerinde giri amal olarak kullanlmak zere herbir G/ ucuna bir adet pushbuttonlar baldr. J2, J17 atalar ve SW1-SW5 anahtarlarnn konumlandrlmasna gre butona basldnda lojik 1 brakldnda lojik 0, butona basldnda lojik 0 brakldnda lojik 1 eklinde iki farkl konfigrasyon salanabilir. J17 ile butona basldnda mikro denetleyici ucunda oluacak deer seilirken SW1-SW5 on konumunda iken J2 atac ile tu brakldnda mikro denetleyici ucunda oluacak deer belirlenir. PortBnin bir ucuna ilikin pushbutton ayarlanmas aadaki ekillerde gsterilmitir.
Set zerinde pushbuttonlardan farkl olarak iki ayr tu takm salanmtr. Men tu takmnn konfigrasyonu pushbuttonlar gibi yaplmaktadr (RA0-RA5). 4x4 tu takm ise klasik tu takm konfigrasyonundadr. RD4-RD7 tu takmn srmek iin, RD0-RD3 tu takmn okumak iin kullanlr. J4 pull-down konumunda, SW4 ilk 4 anahtar on konumunda olmaldr.
2x16 karakter LCD modlnn donanmsal balantlar 4 bitlik alma moduna gre yaplmtr. LCD arka SW6nn 8 numaral anahtar ile almakta, kontrast potansiyometresi (P4) ile netlik ayar yaplabilmektedir. Karakter LCD iin data ve kontrol ular mikro denetleyicinin PortB ular ile salanr. 2x16 karakter LCD modl iin ematik aada verimitir.
10 128x64 grafik LCD arkaplan SW6nn 8 numaral anahtarnn on konumuna getirilmesi ile alr. Kontrast ayar iin P3 potansiyometresi kullanlr. Grafik LCD iin data mikro denetleyici PortB ular ile, kontrol ise PortD ular salanr. 128x64 grafik LCD iin donanmsal balant aadaki ekilde verilmitir.
Dokunmatik ekran paneli GLCD modlne yaptrlarak kullanlr. Yatayda ve dikeyde okunan iki farkl analog deer ile panel zerinde dokunulan nokta iin koordinat ADC dnm ile elde edilir.
11
PIC16F887 C Tantm
PIC16F887 mikro denetleyicisi RISC mimarisine sahip 8 bitlik bir denetleyicidir. 35 komuta sahiptir ve dallanma (branch) komutlar hari tek evrimlik komutlara sahiptir. PIC16F887 toplam 8192 word kapasiteli program belleine, 368 byte SRAM veri belleine ve 256 byte EEPROM veri belleine sahiptir. 35 G/ pinine, 10 adet 10 bitlik A/D kanalna, 1 adet gelimi CCP modlne, 1 adet CCP modlne, 1 adet Enhanced Universal Synchronous Asynchronous Receiver Transmitter modlne, 1 adet Master Synchronous Serial Port modlne, 2 adet karlatrma modlne, 1 adet 8 bitlik ve 2 adet 16 bitlik Timer modlne sahiptir. PIC16F887ye ait u tanmlar aadaki ekilde verilmitir. Bir uca ilikin farkl grevler SRAM veri belleindeki zel amal yazmalar (SFR) ile kontrol edilir.
12 PIC16F887 mikrodenetleyicisi iin u tanm ve grevleri aada verilmitir. Aadaki tablo incelendiinde rnein 3 numaral pin uygun ayarlamalar ile ya RA1 dijital giri k ucu ya da AN1 analog giri ucu olarak kullanlabilir. Port ayar yazmalarnn reset sonras varsaylan deerleri gerei analog giri olarak ayarlanabilin tm ular reset sonrasnda analog giri olarak ayarldr. Bu sebeple 3 numaral pini dijital giri k amal olarak kullanabilmek iin istenen port ilk durumlandrmalar yazlmsal olarak yaplmaldr.
13 PIC16F887ye ilikin iyap, aada verilmitir. Program bellei adres yolu, SRAM veri bellei adres yolu, program bellei veri yolu, SRAM veri bellei veri yolu ile EEPROM adresleme ve veri ular ekil zerinde iaretlenmitir. PIC16F887de akmlatr ve genel amal yazma olarak W yazmac (working register) kullanlr.
14 PIC16F887ye ilikin program bellei organizasyonu aadaki eklide verilmitir. ekilde ayrca program belleinde reset ve kesme vektr adresleri de iaretlenmitir. Sistem ilk balatldnda veya reset devresi ile reset durumu oluturulduunda PC ye 0x0000 adres deeri yklenir. Benzer ekilde bir kesme durumunda PCye 0x0004 adresi yklenir.
PC deeri PCL ve PCLATH yazmalar ile oluturulur. PC deerinin elde edilmesine ilikin ekil aada verilmitir.
15 SRAM veri belleine ilikin organizasyon aada verilmitir. Bu yap ierisinde evre birimlerin ayar ve kontrolleri iin zel amal yazmalar (special function registers)ve kullancya sunulmu genel amal yazma (general purpose registers) blgeleri bulunmaktadr.
16 SRAM blgesinde yerletirilmi nemli SFR yazmalarna ilikin bit tanmlar ve reset deerleri aadaki tablo ile verilmitir.
Addr 03h 05h 06h 07h 08h 09h 0Bh 17h 1Fh 85h 86h 87h 88h 89h 10Ch 10Dh 188h 189h 18Ch sim STATUS PORTA PORTB PORTC PORTD PORTE INTCON CCP1CON ADCON0 TRISA TRISB TRISC TRISD TRISE EEDAT EEADR ANSEL ANSELH EECON1 Bit 7 IRP RA7 RB7 RC7 RD7 GIE P1M1 ADCS1 TRISA7 TRISB7 TRISC7 TRISD7 EEDAT7 EEADR7 ANS7 EEPGD Bit 6 RP1 RA6 RB6 RC6 RD6 PEIE P1M0 ADCS0 TRISA6 TRISB6 TRISC6 TRISD6 EEDAT6 EEADR6 ANS6 Bit 5 RP0 RA5 RB5 RC5 RD5 T0IE DC1B1 CHS3 TRISA5 TRISB5 TRISC5 TRISD5 EEDAT5 EEADR5 ANS5 ANS13 Bit 4 TO RA4 RB4 RC4 RD4 INTE DC1B0 CHS2 TRISA4 TRISB4 TRISC4 TRISD4 EEDAT4 EEADR4 ANS4 ANS12 Bit 3 PD RA3 RB3 RC3 RD3 RE3 RBIE CCP1M3 CHS1 TRISA3 TRISB3 TRISC3 TRISD3 TRISE3 EEDAT3 EEADR3 ANS3 ANS11 WRERR Bit 2 Z RA2 RB2 RC2 RD2 RE2 T0IF CCP1M2 CHS0 TRISA2 TRISB2 TRISC2 TRISD2 TRISE2 EEDAT2 EEADR2 ANS2 ANS10 WREN Bit 1 DC RA1 RB1 RC1 RD1 RE1 INTF CCP1M1 GO/DONE TRISA1 TRISB1 TRISC1 TRISD1 TRISE1 EEDAT1 EEADR1 ANS1 ANS9 WR Bit 0 C RA0 RB0 RC0 RD0 RE0 RBIF CCP1M0 ADON TRISA0 TRISB0 TRISC0 TRISD0 TRISE0 EEDAT0 EEADR0 ANS0 ANS8 RD Reset Deeri 0001 1xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---xxxx 0000 000x 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111 ---1111 0000 0000 0000 0000 1111 1111 --11 1111 x--- x000
= fonksiyon atanmam blgeler, x = belirsiz SRAM veri belleinin adreslenmesine ilikin modlar dorudan adresleme ve dolayl adresleme olarak aada verilmitir. Dorudan adresleme: 9 bitlik ram adresinin 7 biti instructiondan 2 biti ise STATUS<6:5> yazmacndan gelir.
17 //STATUS 0x03 olarak tanmlanm ise BSF STATUS, 6 BSF STATUS, 5 MOVLW 0xFF MOVWF 0x0C //EECON1 SFR yazmacna 0xFF yazld //STATUS 0x03 olarak tanmlanm ise BSF STATUS, 6 BCF STATUS, 5 MOVLW 0xFF MOVWF 0x0C //EEDAT SFR yazmacna 0xFF yazld
Dolayl Adresleme:9 bitlik adresin 8 biti FSR yazmacndan bir biti ise STATUS<7> yazmacndan gelir.
BCF STATUS, 7 MOVLW 0x20 MOVWF FSR NEXT : CLRF INDF //dolayl adreslemede INDF yazmacnda yazl olan bellek gzne eriilir INCF FSR BTFSS FSR,4 GOTO NEXT //0x20 -0x2F adresleri arasndaki SRAM veri belleini siler
modlarndan
farkl
olarak
Relative
Addressing
modu
da
18 Yaptrlacak deneylerde kullanlacak PIC16F887 modllerine ilikin gerekli SFR yazmalar ve modllere ilikin ematik yap aada verilmitir. EUSART modlne ilikin yap aada verilmitir.
20
21
Mnemonic, Operands
Notes
ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF
f, d f, d f f, d f, d f, d f, d f, d f, d f, d f f, d f, d f, d f, d f, d
Add W and f AND W with f Clear f Clear W Complement f Decrement f Decrement f, Skip if 0 Increment f Increment f, Skip if 0 Inclusive OR W with f Move f Move W to f No Operation Rotate Left f through Carry Rotate Right f through Carry Subtract W from f Swap nibbles in f Exclusive OR W with f
1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110
dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff
ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff
C, DC, Z Z Z Z Z Z Z Z Z
1, 2 1, 2 2 1, 2 1, 2 1, 2, 3 1, 2 1, 2, 3 1, 2 1, 2
C C C, DC, Z Z
1, 2 1, 2 1, 2 1, 2 1, 2
BIT-ORIENTED FILE REGISTER OPERATIONS BCF BSF BTFSC BTFSS f, b f, b f, b f, b Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set 1 1 1 (2) 1 (2) 01 01 01 01 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff 1, 2 1, 2 3 3
LITERAL AND CONTROL OPERATIONS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW k k k k k k k k k Add literal and W AND literal with W Call Subroutine Clear Watchdog Timer Go to address Inclusive OR literal with W Move literal to W Return from interrupt Return with literal in W Return from Subroutine Go into Standby mode Subtract W from literal Exclusive OR literal with W 1 1 21 2 1 1 2 2 21 1 1 11 11 10 00 10 11 11 00 11 00 00 11 11 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 110x 1010 kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 kkkk kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk TO, PD C, DC, Z Z Z C, DC, Z Z TO, PD
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 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 device, the data will be written back with a 0. 2: If this instruction is executed on the TMR0 register (and where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 module. 3: If the Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP.
22
Field
f W b k x
Description Register file address (0x00 to 0x7F) Working register (accumulator) Bit address within an 8-bit file register Literal field, constant data or label Dont care location (= 0 or 1). The assembler will generate code with x = 0. It is the recommended form of use for compatibility with all Microchip software tools. Destination select; d = 0: store result in W, d = 1: store result in file register f. Default is d = 1. Program Counter Time-out bit Carry bit Digit carry bit Zero bit Power-down bit
PC TO C DC Z PD
23
mikroC derleyicisi ile PIC assembly komutlar kullanlmak istendiinde asm blou kullanlmaldr.
unsigned myvar; void main() { myvar=0; asm { MOVLW 10 MOVLW test_main_global_myvar_1 } }
mikroC derleyicisi zerinde uygulama gelitirilecek mikro denetleyiciye zel veya genel uygulama ktphanelerine sahiptir. Bu ktphanelerin aklamalarna mikroC IDE zerinden Help > Help mensnden Contents tab ierisindeki mikroC Libraries yolu ile eriilebilir.
mikroC derleyicisi ile derleme ilemi sonucunda oluan .lst uzantl dosya incelenerek c kodlarna karlk retilen PIC assembly komutlar grlebilir.
24
25 CCS C derleyicisi ile PIC assembly komutlar kullanlmak istendiinde asm blou kullanlmaldr.
void asm_function(){ #asm BCF 3,6 BCF 3,5 MOVLW 0x11 MOVWF 0x20 BCF 3,6 BSF 3,5 MOVLW 0x33 MOVWF 0x20 #endasm }
eriilebilir.
CCS C derleyicisi ile derleme ilemi sonucunda oluan .lst uzantl dosya incelenerek c kodlarna karlk retilen PIC assembly komutlar grlebilir.
26
Bit<6:5>
Bit2
Bit1 Bit0
27 ANSEL ve ANSELH REGISTER A ve E portlar iin analog-dijital i/o seim bitleri. (ANSEL) b7 ANS7 Bit<7:0> b6 b5 b4 b3 b2 b1 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 Analog seim bitleri; AN0-AN7 ular iin dijital I/O veya analog seim ucu 1 = Analog giri 0 = Dijital I/O b0 ANS0
B portu iin analog-dijital i/o seim bitleri. (ANSELH) b7 Bit<5:0> b5 b4 b3 b2 b1 ANS13 ANS12 ANS11 ANS10 ANS9 Analog seim bitleri; AN0-AN7 ular iin dijital I/O veya analog seim ucu 1 = Analog giri 0 = Dijital I/O b6 b0 ANS8
Analog veya dijital i/o olarak ayarlanabilecek ular ve karlk gelen dijital i/o ve analog u tanmlar aadaki gibidir. Analog giri olarak ayarlanabilir tm ular reset varsaylan deerleri gerei analog giri ayarl olarak ilk deer alrlar. lgili ular dijital i/o iin kullanlacaksa istenen ilk deerler yazlmsal olarak verilmelidir. EECON1 : EEPROM CONTROL REGISTER b7 EEPGD Bit7 b6 b5 b4 b3 WRERR b2 WREN b1 WR b0 RD
Bit3
Bit2
Bit1
Bit0
Program/Data EEPROM seim biti 0 = Veri belleine eriim 1 = program belleine eriim EEPROM hata bayra 0 = Yama ilemi kesildi 1 = Yazma ilemi baarl EEPROM yazma izin biti 0 = Veri EEPROMa yazmay engelle 1 = Yazma evrimini aktif yap Yazma kontrol biti 0 = EEPROMa yazma evrimi baar ile tamamland 1 = Yazma evrimini balat Okuma kontrol biti 0 = Okuma balatlmasn 1 = Okuma evrimini balat
EEADR : EEPROM ADDRESS REGISTER b7 b6 b5 b4 b3 b2 EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 Bit<7:0> EEPROM okuma yazma ilemlerinde adres tutan yazma b1 EEADR1 b0 EEADR0
28 EEDAT : EEPROM DATA REGISTER b7 b6 b5 b4 b3 b2 EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 Bit<7:0> EEPROM okuma yazma ilemlerinde veri tutan yazma Deney Srasnda Yaplacaklar 1) PIC16F887nin SRAM veri bellei blgesinde bank0 ofset 0x20 adresi ile bank1 ofset 0x20 adreslerindeki deerleri toplayarak bank3 ofset 0x20 adresine yazan program PIC assembly komutlar ile oluturunuz. 2) PIC16F887nin SRAM veri bellei blgesinde bank3 ofset 0x20 adresindeki deer 0x7F'ten bykse bank1 ofset 0x20 adresine 0x3E yazan, kkse bank1 ofset 0x20 adresine 0x3C yazan, 0x7F'e eitse bank1 ofset 0x20 adresine 0x3D yazan program PIC assembly komutlar ile oluturunuz. 3) PIC16F887nin SRAM veri bellei blgesinde bank2 ofset 0x20 ile ofset 0x3F adres aralna 0xFB deeri yazan program PIC assembly komutlar ile oluturunuz. (Dolayl adresleme kullannz) 4) PIC16F887nin SRAM veri bellei blgesinde bank2 ofset 0x20 ile ofset 0x3F adres araln srasyla 0x01ten 0x20ye deerleri yazan program PIC assembly komutlar ile oluturunuz. (Dolayl adresleme kullannz) 5) PIC16F887nin EEPROM veri bellei blgesindeki ilk 3 wordu (0x00, 0x01, 0x02 adreslerindeki) okuyup SRAM veri bellei blgesinde bank3 ofset 0x20 adresinden itibaren yazan program PIC assembly komutlar ile oluturunuz. 6) PIC16F887, 8 bitlik iaretsiz saylar zerinden ilem yapmaktadr. Gerekli kontrolleri belirleyip uygulayarak; SRAM veri bellei blgesinde bank3 ofset 0x20 adresindeki 2ye tmleyen deer ile bank2 ofset 0x20 adreslerindeki 2ye tmleyen deeri toplayarak ilem sonucunu bank1 ofset 0x20 adresine yazan program PIC assembly komutlar ile oluturunuz. Deney Sonu Sorular PIC16F887 mikro denetleyicisinin EEPROM ve SRAM veri bellekleri hangi amala kullanlr? Az sayda komuta sahip olan ve bu komutlarn ounu ksa evrim srelerinde tamamlayacak ekilde oluturulmu ilemci mimarilerine verilen isim nedir? Veri bellei ile program belleinin ayr olduu ilemci mimarilerine verilen isim nedir? Veri bellei ile program belleinin ayr olmasnn avantaj ve dezavantajlar nelerdir? b1 EEDAT1 b0 EEDAT0
29
TRISx : PORTx TRISTATE CONTROL REGISTER (x : A, B, C ve D, E iin geerli) b7 TRISx7 Bit<7:0> b6 b5 b4 TRISx6 TRISx5 TRISx4 PORTx tristate kontrol bitleri 0 = Ucu k olarak ayarla 1 = Ucu giri olarak ayarla b3 TRISx3 b2 TRISx2 b1 TRISx1 b0 TRISx0
Deney Srasnda Yaplacaklar: 1) PIC16f887 mikro denetleyicisi ile PORTDyi kullanarak kayan k uygulamas gerekletirin. Bu amala PORTDyi k ynl ayarlayn. Grnrl arttrabilmek iin LEDler yakldktan sonra bo dng ile bekleme fonksiyonu kullann. (LED kullanm ile ilgili anahtar ve ata ayarlarn inceleyin) 2) PIC16F887 mikro denetleyicisinde PORTB<0> ve PORTB<1> ularn pushbutton ile kullanacak ekilde ayarlaynz, PORTD iin LED anahtarn ak konumuna getiriniz. PIC assembly ile PORTBnin dk anlaml 2 bitini giri, PORTDyi k olarak ayarlaynz. RB0 pushbutonuna basldnda PORTD deerini 1 arttran, RB1 pushbutonuna basldnda PORTD deerini 1 azaltan program PIC assembly komutlar ile yaznz. (Pushbutton kullanm ile ilgili anahtar ve ata ayarlarn inceleyin) 3) PIC16F887 mikro denetleyicisinde PORTC<0> ve PORTC<1> ularn pushbutton ile kullanacak ekilde ayarlaynz, PORTB iin LED anahtarn ak konumuna getiriniz. PIC assembly ile PORTCnin dk anlaml 2 bitini giri, PORTByi k olarak ayarlaynz. PORTBye k olarak 0x80 deerini gnderin. RC0 pushbutonuna basldnda PORTB deerinin 1/2sini, RC1 pushbutonuna basldnda PORTB deerinin 2 katn k olarak LEDlerde gsteren program PIC assembly komutlar ile yaznz. (Pushbutton kullanm ile ilgili anahtar ve ata ayarlarn inceleyin)
30 4) 4x4 tu tarama modln kullanarak baslan tu deerini PORTCye bal LEDlerde gsteren program PIC assembly komutlar ile gerekleyin. (4x4 tu tarama modl ematiini inceleyin) Deney Sonu Sorular Mikro denetleyicinin d dnya ile iletiimi neden portlar aracl ile yaplrken veri/adres yollar ile yaplmaz? 0-9 arasndaki rakamlar gsterebilmek iin ortak katotlu ve ortak anotlu 7 paral gstergeye hangi deerler gnderilmelidir, aadaki tabloyu tamamlayn.
Ortak Anotlu e d c b a
Ortak Katotlu e d c b a
0 1 0 0 0 0 1 1 0 2 3 4 5 6 7 1 1 1 1 0 0 0 8 9
31
READ_ADC( ) ADC_DONE #device ADC=x CCS CCP Ktphanesi SET_PWM1_DUTY( ) SETUP_CCP1(mode) mode is a constant. Valid constants are in the devices .h file and are as follows: Disable the CCP: CCP_OFF Set CCP to PWM mode: CCP_PWM Enable Pulse Width Modulator SET_PWM2_DUTY( ) SETUP_CCP2( )
32 CCS Timer Ktphanesi SET_TIMER0( ) SETUP_TIMER_0( ) mode may be one or two of the constants defined in the devices .h file. RTCC_INTERNAL, RTCC_EXT_L_TO_H or RTCC_EXT_H_TO_L RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32, RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256 One constant may be used from each group or'ed together with the | operator SET_TIMER1( ) SETUP_TIMER_1(mode) mode values may be: T1_DISABLED, T1_INTERNAL, T1_EXTERNAL, T1_EXTERNAL_SYNC T1_CLK_OUT T1_DIV_BY_1, T1_DIV_BY_2, T1_DIV_BY_4, T1_DIV_BY_8 constants from different groups may be or'ed together with | SET_TIMER2( ) SETUP_TIMER_2(mode, period, postscale ) mode may be one of:
period is a int 0-255 that determines when the clock value is reset, postscale is a number 1-16 that determines how many timer overflows before an interrupt: (1 means once, 2 means twice, and so on). CCS I/O Ktphanesi SET_TRIS_A( ) SET_TRIS_B( ) SET_TRIS_C( ) SET_TRIS_D( ) INPUT_A( ) INPUT_B( ) INPUT_C( ) INPUT_D( ) OUTPUT_A( ) OUTPUT_B( ) OUTPUT_C( ) OUTPUT_D( ) OUTPUT_TOGGLE( ) CCS Delay Ktphanesi DELAY_MS( ) DELAY_US( )
33 Deney Srasnda Yaplacaklar Deney srasnda kullanlacak mikro denetleyici ularnn gerekli ekilde ayarlandndan emin olun (analog giri veya dijital i/o). 1) PIC 16F887 iin 2 farkl fonksiyonun zaman paylaml olarak 1snde bir (1. snde 1. fonksiyon, 2. snde 2. fonksiyon, 3. snde tekrar 1. fonksiyon ...) arlmas istenmektedir. Bu ilemi a. Kesme kullanmadan delay fonksiyonlar ile b. Timer 1 modl, Timer 1 kesmesi ve gerekli kontrolleri kullanarak gerekletirin. Fonksiyon 1 PORTA deerini 1 arttrsn, fonksiyon 2 PORTB deerini 2 arttrsn. Timer 1 iin kontrol oluturulurken aadaki blok diyagramdan faydalanlabilir:
Tama FFFF 0000 geiinde Genel amal yazma
fosc
Xtal
1/4
Prescalar (1,2,4,8)
Timer1H
Timer1L
sre
2) Analog gerilim deerlerinin AN0 analog kanalndan okunarak B potundaki LEDlerde dijital evrim karlklarnn gsterilmesi istenmektedir. Bu ilemi ADC modl kullanmyla a. GO/ bitini dng ierisinde adc_done() fonksiyonu ile kontrol ederek b. ADC kesmesi kullanarak gerekletirin. ADC ayarlar iin aadaki admlar izlediinizden emin olun: AN0 ucunu analog dijital evrim iin kullanacak ekilde ayarlayn Analog kanal seimini 0 olarak yapn AN0 ucunu giri olarak ayarlayn A/D dnmn 8 bitlik znrlkle yapacak ayar yapn 3) PWM iareti servo motor srme, DC motor hz kontrol ve benzeri pekok kontrol uygulamasnda kullanlmaktadr. Sabit darbe genilik oranna sahip bir PWM iaretini a. Delay fonksiyonlar kullanarak b. CCP2 modln kullanarak gerekleyiniz. PWM etkisini DC motor modl hz deiimi ile inceleyin. CCP2 modl ayarlar iin aadaki admlar izlediinizden emin olun: CCP2CON yazmacna PWM iin uygun kontrol deerini yazn CCP2 modl PWM iin Timer2 kullandndan Timer2 periyodu (PR2) dolaysyla PWM periyodu iin uygun deerleri yazn CCP2 ucunu k olarak ayarlayn CCPR2L<7:0>:CCP2CON<5:4> ile 10 bitlik PWM duty deerini yazn 4) CCP2 modl ile donanmsal olarak retilen PWM iaretinin darbe genilik orannn AN0 analog kanalna bal potansiyometre ile ayarlanabilmesi iin gerekli program oluturun. Oluturacanz programda CCP2 modl ve ADC kesmesi kullanlmaldr. CCP2 ve ADC modllerinin birlikte kullanlmas ile elde edilen sonucu DC motor modl hz deiimi ile inceleyin.
34 Deney srasnda gerekli PWM periyot, duty ve znrlk hesaplar aada verilmitir:
[( (
)] ) [ (
( ( )]
) )
Darbe genilii en fazla PWM periyodu kadar olabilecei iin duty deeri olarak yazlabilecek anlaml en byk deer DarbeGenilii=PWMPeriyot alnarak hesaplanabilir. deeri mikro denetleyicinin alma periyodudur. Deneylerde 8 MHzlik alma frekans kullanlmaktadr.
Deney Sonu Sorular Donanmsal modllerin (CCP, Timer gibi) gerekli ayarlar yapldktan sonra almalar srasnda komut yrtlmesine etkileri nedir? Soruyu 5 saniyede bir RA0 pinine bal LEDi toogle eden bir program parasn Timer modl ile ve yazlmsal gecikme ile yaptnz durumda karlatrarak aklayn. Aada verilen analog iaret iin 3 bitlik znrlkte 1 saniye periyot ile rnekleyin. Sonucu aadaki grafikte izin.
35
I2C haberleme protokol iin bala, dur, masterslave ynl haberleme, slavemaster ynl haberleme koullar aada verilmitir inceleyin:
RS232 ve I2C haberlemesi ile ilgili 16F887 SFR yazmalarn inceleyin. 8583 RTC entegresi katalog bilgilerini inceleyin.
36 Deney Srasnda Yaplacaklar: 1) Yazlmsal olarak (bitbanging) yntemiyle EasyPic6dan PCye bir byte karakter (A karakteri) gnderen program kodlayn. 2) RS232 arayz ile donanmsal seri haberleme kesmesi kullanarak aada verilen seri haberleme arayzn ve ilemleri gerekletirecek program oluturun. Seri veri gnderme ve seri veri alma kesmelerinin hangi durumlarda olutuunu inceleyin. CCS C derleyicisi iin seri haberleme kesmesi kullanm iin kullanlabilecek kod ablonu aada verilmitir.
#include "main.h" #INT_RDA void rda_isr(){ //RS232 seri veri alma kesmesi olutuunda bu fonksiyon arlr } #INT_TBE void tbe_isr(){ //RS232 seri veri gnderme kesmesi olutuunda bu fonksiyon arlr } void main(){ enable_interrupts(GLOBAL);//kesmeleri a enable_interrupts(INT_RDA);//RS232 seri veri alma kesmesini a enable_interrupts(INT_TBE);//RS232 seri veri gnderme kesmesini a }
Bilgisayar tarafndaki arayz Easypic6in seri olarak gnderdii veri ile oluturulmaktadr, deney kapsamnda bilgisayar tarafnda girilen komuta gre EasyPic6 tarafnda istenen ilemin gerekletirilmesi istenmektedir. 3) Easypic6 zerindeki denetleyici I2C master olacak ekilde programlanarak Real Time Clock uygulama kart zerinden okuma yaplmas ve elde edilen tarih ve saat deerlerinin karakter LCDde gsterilmesi istenmektedir.
37 a. 8583 RTC entegresi zerine gncel saat ve tarih deerini i2c masterdan slavee veri yazma mant ile oluturun. b. 8583 RTC entegresinden saat ve tarih okuyarak karakter lcdde bu deerleri gsterin. 4) I2C arayznden okunan saat ve tarih deerlerini RS232 arayznden PCye gnderen program oluturun. 5) RS232 arayz ile RTC ayarlama ve RTC okuma ilemlerini gerekletirin.
38
39
Kaynaklar
16F887 katalog bilgisi : http://ww1.microchip.com/downloads/en/DeviceDoc/41291E.pdf EasyPic6 kullanma klavuzu: http://www.mikroe.com/eng/downloads/get/311/easypic6_manual_v100.pdf mikroProg kullanma klavuzu : http://www.mikroe.com/eng/downloads/get/1265/mikroprog_manual_v100.pd0f 8583 RTC katalog bilgisi : http://www.datasheetcatalog.org/datasheet/philips/PCF8583_5.pdf
40
41
42
43
44
45
46
47
Aygt seim penceresinde keywords kutusuna dorudan kullanlacak aygt ad yazlarak veya category penceresinden balk seilerek istenen aygt aranr. Arama sonular results penceresinde listelenir. stenen Aygt seilerek OK dmesine baslarak aygt program aygt penceresine eklenir.
Deney ortamnda aygta ilikin ayarlamalar yapmak zere aygt zellikleri mensne aygt zerinde iken sa Mouse tuu ile alan menden girilir.
Program File olarak derlediiniz koda ilikin .cof uzantl dosyann yolunu gstermelisiniz. .cof uzantl dosyann bulunduu klasrde .c, .h vb. kaynak kodlarn olduundan emin olun.
50
Aygt zellikleri mensn OK ile getikten sonra debug ilemini pause dmesi dmesine baslmas ile kod penceresi ve deikenler penceresi alr.
51 PIC16F887 zerinde iken sa Mouse tuu ile PIC CPU mensnden yazmalar, veri bellei, program bellei, EPROM veri bellei, stack, kaynak kod ve deikenler pencereleri alabilir.
52 Kaynak kod penceresinde yer alan run, step over, step into, step out, run to cursor ve toogle breakpoint dmeleri ile debug ilemi gerekletirilir. Kaynak kod zerinde breakpoint eklenebilir. Aada kaynak kodda iaretli satra kadar adm adm altrma sonucu veri belleinde deien ierik grlmektedir.