You are on page 1of 20

PIC PROGRAMLAMA

EL KITABI

Ali Okatan, Çagatay Akpolat, Safak Bülbül


(Eylül 2003)
PIC Programlama Örnekleri - 1

Sistem Gereksinimleri:
PIC programlayicinin kullanilabilmesi için;
• Win98 ve üstü bir isletim sistemi
• Paralel port
• 60 MB veya daha üstü disk alani
gerekmektedir.
Ancak programlama yazilimi sadece PIC16F84 ve PIC16F8XX mikroislemcileri ile birlikte
kullanilabilmektedir.

Uygulama Gelistirme:
Microchip firmasi, PIC Mikroislemcileri ile uygulama gelistirmek için kullanilan MPLAB®
gelistirme ortamini ücretsiz olarak web sitesinden dagitmaktadir. Uygulamanizi bu
gelistirme ortamini kullanarak hazirlayabilirsiniz. Programinizi derlediginizde HEX soyadli
bir dosya olusturulacaktir. Bu dosya, gelistirdiginiz uygulamanin, hedef islemcinin makine
koduna dönüstürülmüs seklidir. PIC Programlayici ile islemciye yazilacak dosya da bu
dosyadir.

PIC Mikroislemcisinin Programlanmasi:


PIC Mikroislemcilerinin programlanabilmesi için asagidaki adimlarin izlenmesi
gerekmektedir. Bu adimlarin bazilari devre ilk kez kullanilacak ise yapilmasi gerekenleri
içermektedir. Ilgili adimlar (Sadece bir kez yapilacak) ibaresi ile belirtilmistir.
A. http://www.eng.bahcesehir.edu.tr/courses/02-03/spring/cse1104/handouts.html
internet sayfasindan gerekli dosyayi bilgisayariniza indirin. (Sadece bir kez
yapilacak)
B. Bu program sikistirilmis bir program yükleme dosyasidir. Dosyaya çift tiklayarak
yükleme islemini baslatin. Yüklemi islemi üç ayri yazilimin yüklenmesini
içermektedir. Bunlardan ilki kullanici tarafindan yazilan uygulamayi PIC
Mikroislemcisine yüklemek için kullanilacak olan ProPIC programlayici yazilimi,
ikincisi PIC Mikroislemcisi için uygulama gelistirmenizi saglayak olan MPLAB®
yazilimi, sonuncusu ise programlama yaziliminin bilgisayarinizin LPT portuna
erisimini saglamak için kullanilacak sürücü yazilimi olan DLPortIO. (Sadece bir kez
yapilacak)
C. Yüklemenin sonunda, sürücü yazilimi bilgisayarinizi tekrar baslatmak isteyecektir.
Ekrana gelen uyari kutucuguna onay vereriniz. Aksi takdirde islemciyi
programlamak için kullanacagimiz yazilim, bilgisayarinizi tekrar baslatincaya kadar
çalismayacaktir. (Sadece bir kez yapilacak)
2 - PIC Programlama El Kitabi

Sekil 1: Yüklenmis ProPIC, MPLAB® ve DLPortIO sürücü yazilimi


D. MPLAB® yazilimini kullanarak uygulamanizi gelistirin ve derleyin. Derleme islemi
.HEX soyadli makine kodu içeren bir dosya olusturacaktir. Bu dosya Window
isletim sistemlerinin çalistirilabilir dosyalari olan .EXE dosyalari gibi düsünülebilir.
E. Programlayici devreyi, bilgisayarinizin LPT (Printer) portuna, birlikte verilen güç
kaynagini da elektrik sebekesine baglayiniz.

Sekil 2: Programlayicinin bilgisayara baglanmasi


F. Uygulamanizi derledikten sonra START>Programs>ProPIC menüsünden ProPIC
adli simgeye tiklayarak programlama yazilimini çalistiriniz.

Sekil 3: ProPIC yaziliminin görünümü


G. ProPIC bilgisayarin çesitli portlarini kullanabilmektedir. Bu denenle bizim
kullandigimiz programlayici devre ile çalisabilmesi için dogru portun seçilmesi
gerekir. Port>PP 0378 menüsüne tiklayarak LPT portunu seçin. Ekrana gelecek
PIC Programlama Örnekleri - 3

küçük bir pencerede programlayici devreyi seçmeniz istenmektedir. Buradan


“AN589 based” seçenegini seçip pencereyi kapatin. (Sadece bir kez yapilacak)

Not: Çesitli aksakliklar (devrenin bozuk olmasi, LPT portuna baglanmamasi,


devreye elektrik verilmemesi vs.) sonucu programlayici devre belirtilen portta
bulunamazsa, asagidakine benzer bir uyari kutucugu görüntülenecektir.

H. Programlayicinin File>Open File menüsünden derlenmis durumdaki (.HEX)


dosyasini bularak açiniz.

Sekil 4: Derlenmis dosyanin ProPIC'e yüklenmesi


.HEX dosyasini açtikdan sonra ana ekrandaki “Write All” dügmesine basarak gelistirdiginiz
uygulamayi PIC Mikroislemcisine yükleyebilirsiniz.
4 - PIC Programlama Örnekleri

PIC Programlama Örnekleri


Uygulama – 1
Pic’e enerji verildiginde PORTA’nin uçlarina bagli butonlardan hangisi basili tutulursa,
PORTB‘de o butona karsilik gelen LED’i söndüren uygulama.

Akis Semasi:

Kaynak Kodu:
LIST P=16F84
PORTA EQU h’05’
PORTB EQU h’06’
STATUS EQU h’03’
TRISA EQU h’85’
TRISB EQU h’86’

CLRF PORTB ;PortB’ye bagli ledleri sondur


BSF STATUS,5 ;Bank1’e geç
CLRF TRISB ;PortB’nin uclarini Cikis yap
MOVLW h’FF’ ;W registere h’FF’ yuklenir
MOVWF TRISA ;PortA’nin uclarini Giris yap
BCF STATUS,5 ;Bank0 gec
BASLA:
MOVF PORTA,W ;PortA yi okuyu sonucu W’ yaz
MOVWF PORTB ;Butonlarin durumunu portB de goster
DONGU:
GOTO DONGU
END
PIC Programlama Örnekleri - 5

Uygulama – 2
PortB’nin 0. Bitine bagli LED’i,A portunun 1.bitindeki butona basilinca yakan uygulama.

Akis Semasi:

Kaynak Kodu:
LIST P=16F84
PORTA EQU h’05’
PORTB EQU h’06’
STATUS EQU h’03’
TRISA EQU h’85’
TRISB EQU h’86’

CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h’FF’
MOVWF TRISA
BCF STATUS,5
PA_TEST:
BTFSC PORTA,1 ;A portunun 1. bitini test et
GOTO PA_TEST ;0 degilse tekrar test et
BSF PORTB,0 ;B portunun 0.bitini 1(set) yap
DONGU:
GOTO DONGU
END
6 - PIC Programlama Örnekleri

Uygulama – 3
A portunun 4.bitine bagli olan buton basili tutularak PIC’e enerji verildiginde,B portundaki
LED’leri sönük tutan, butondan elçekildiginde ilk dört LED’i yakan uygulama.

Program-2 deki flowcart kullanilabilir yapilmasi gereken degisiklik uygulanir.

Kaynak Kodu:
LIST P=16F84
PORTA EQU h’05’
PORTB EQU h’06’
STATUS EQU h’03’
TRISA EQU h’85’
TRISB EQU h’86’

CLRF PORTB
BFS STATUS,5
CLRF TRISB
MOVLW h’FF’
MOVWF TRISA
BCF STATUS,5
PA_TEST:
BTFSS PORTA,4 ;PortA nin 4.biti 1 mi?
GOTO PA_TEST ;hayir,test et
MOVLW h’0F’ ;W’ ye b’00001111’ yukle
MOVWF PORTB ; W’yide PortBye gonder
DONGU:
GOTO DONGU
END
PIC Programlama Örnekleri - 7

Uygulama – 4
A portunun 1.bit’ine bagli butona 10 defa basildiktan sonra B portunun 0.bit’ine bagli olan
LED’i yakan uygulama....

Akis Semasi:

Kaynak Kodu:
LIST P=16F84
INCLUDE “P16F84.INC”

SAYAC EQU h’0C’

CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h’FF’
MOVWF TRISA
BCF STATUS,5
8 - PIC Programlama Örnekleri

BASLA:
MOVLW d’10’ ;W’ye decimal 10 yukle
MOVWF SAYAC ;SAYACA’da W’yi
TEST:
BTFSC PORTA,1 ;porta nin 1.biti 1 mi?
GOTO TEST ;hayir,TEST ‘e don

NOP
NOP ;gecikme zamani
NOP

DECFSZ SAYAC,F ;SAYAC = 0 ?


GOTO TEST ;hayir
BSF PORTB,0 ;portB’nin 0 bitini 1 yap
END
PIC Programlama Örnekleri - 9

Uygulama – 5
A portunun 1.bitindeki butona bastikça B portundaki LED’leri 9’dan 0’a kadar azaltarak
yakan program.

Akis Semasi:
10 - PIC Programlama Örnekleri

Kaynak Kodu:
LIST P16F84
INCLUDE “P16F84.INC”

SAYAC1 EQU h’0C’ ;SAYAC1 ‘e adres atandi


SAYAC2 EQU h’0D’ ;SAYAC2 ‘ye adres atandi
CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h’FF’
MOVWF TRISA
BCF STATUS,5

BASLA:
MOVLW h’0A’ ;W’ye h’10’^yuklenir
MOVWF SAYAC1 ;W’de SAYAC1’e
TEST:
BTFSC PORTA,1 ;PortA’nin 1.biti 0 mi?
GOTO TEST ;hayir,TEST

MOVLW h’FF’ ;evet,W’ye h’FF’ yuklenir


MOVWF SAYAC2 ;W’de SAYAC2 ye atanir
GECIKME:
NOP
NOP
NOP
DECFSZ SAYAC2,F ;(SAYAC’?SAYAC’-1)=0 ?
GOTO GECIKME

AZALT:
DECFSZ SAYAC1,F ;(SAYAC1?SAYAC!-1)=0 ?
GOTO YAK
GOTO BASLA
YAK:
MOVF SAYAC1,W
MOVWF PORTB
GOTO TEST
END
PIC Programlama Örnekleri - 11

Uygulama – 6
Zaman gecikme dongusu uygulayarak PortB’ye bagli olan tüm ledleri belirli bir zaman
araliginda yakip sonduren uygulama. (Alt programlara ornek)

Akis Semasi:

Kaynak Kodu:
LIST P=16F84
INCLUDE “P16F84.INC”

SAYAC1 EQU h’0C’


SAYAC2 EQU h’0D’

CLRF PORTB
BSF STATUS,5
CLRF TRISB
BCF STATUS,5

TEKRAR:
MOVLW h’00’
MOVWF PORTB

CALL GECIKME

MOVLW h’FF’
MOVWF PORTB

CALL GECIKME
GOTO TEKTRAR
12 - PIC Programlama Örnekleri

GECIKME:
MOVLW h’FF’
MOVWF SAYAC1

DONGU1:
MOVLW h’FF’
MOVWF SAYAC2
DONGU2:
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
PIC Programlama Örnekleri - 13

Uygulama – 7
PortB’ye bagli 8 led üzerindeki bir led’in yanisini belirli araliklarla kaydiran (LED0 ‘dan
LED7’ye dogru ) uygulama.Yanarak gelen led en sona geldiginde tüm ledler sonuk kalir.

Akis Semasi:

Kaynak Kodu:
LIST P16F84
INCLUDE “P16F84.INC”

SAYAC1 EQU h’0C’


SAYAC2 EQU h’0D’

CLRF PORTB
BSF STATUS,5
BCF STATUS,0
CLRF TRISB
BCF STATUS,5

MOVLW h’01’
MOVWF PORTB

TEKRAR:
CALL GECIKME
RLF PORTB,F
BTFSS STATUS,0
GOTO TEKRAR
DONGU:
GOTO DONGU

GECIKME:
MOVLW h’FF’
MOVWF SAYAC1
DONGU1:
MOVLW h’FF’
MOVWF SAYAC2
14 - PIC Programlama Örnekleri

DONGU2:
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
PIC Programlama Örnekleri - 15

Uygulama – 8
PortB ‘ye bagli olan 8 LED üzerinde bir LED’in yanisini saga-sola kaydiran ve bu islemi
surekli olarak tekrarlayan uygulama.

Akis Semasi:
16 - PIC Programlama Örnekleri

Kaynak Kodu:
LIST P16F84
INCLUDE “P16F84.INC”

SAYAC1 EQU h’0C’


SAYAC2 EQU h’0D’

CLRF PORTB
BSF STATUS,5
BCF STATUS,0
CLRF TRISB
BCF STATUS,5

MOVLW h’01’
MOVWF PORTB

SOL:
CALL GECIKME
RLF PORTB,F
BTFSS PORTB,7
GOTO SOL
SAG:
CALL GECIKME
RRF PORTB,F
BTFSS PORTB,0
GOTO SAG
GOTO SOL
GECIKME:
MOVLW h’FF’
MOVWF SAYAC1

DONGU1:
MOVLW h’FF’
MOVWF SAYAC2
DONGU2:
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
PIC Programlama Örnekleri - 17

Uygulama – 9
PortA ‘nin 1.ve2. bitlerine bagli olan A1 ve A2 butonlarinin her ikisi birden basili
oldugunda PortB’nin 0.bitine bagli led’i yakan uygulama.

Akis Semasi:
18 - PIC Programlama Örnekleri

Kaynak Kodu:
LIST P16F84
INCLUDE “P16F84.INC”

CLRF PORTB
BSF STATUS,5
BCF STATUS,0
CLRF TRISB
BCF STATUS,5
TEST_PA:
MOVLW b’00011001’
XORWF PORTA,W
BTFSS STATUS,2
GOTO TEST_PA

YAK:
MOVLW h’FF’
MOVWF PORTB
DONGU:
GOTO DONGU
END

You might also like