Bu yazımızda PIC 16F628A kullanarak butona basınca yanan,
basmayınca sönen LED uygulaması yapacağız.
Kullanılacak
Malzemeler
- 1xPIC16F628A
- 1x4
Mhz kristal
- 2x22pf
seramik kondansatör
- 1x100nF
seramik kondansatör
- 1xKırmızı
Led(Sarı, yeşil,beyaz veya diğer renkler de olabilir)
- 2xButon
- 1x330
ohm direnç
- 2x100 ohm direnç
- 2x4.7k direnç
- 5 V
DC kaynak(Batarya, pil, adaptör veya güç kaynağı)
Not: Eğer 9-12 V luk bir kaynak kullanacaksanız bu gerilimi
5 V a düşürebilmek için regülatör(düzenleyici) devresi kullanmanız
gerekmektedir.
Regülatör Devresi
Bu devre 7-20 V arasındaki
gerilimi 5 V gerilime dönüştürür.
Kullanılacak Malzemeler(Regülatör İçin)
>>1x7805
>>1x330uF
elektrolitik kondansatör
>>1x100nF
seramik kondansatör
Şekil 1-Regülatör Devresi Şekil 2-LM780 Şekil 3-PIC16F628A Pin Diyagramı
PIC Devresi
Şekil 4-PIC
Devresi
PIC Assembly Kodu
;PIC 16F628A kullanarak Buton ile LED Yakma
;Bu
kod Tuna Bulut tarafından yazılmıştır.
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _XT_OSC &
_WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF &
_DATA_CP_OFF & _CP_OFF
MOVLW H'07'
MOVWF CMCON ;COMPARATOR
ÖZELLİĞİ KAPALI VE PORTA I/O İÇİN AKTİF MODDA
CLRF PORTB ;PORTB Yİ
SIFIRLA
;GİRİŞ-ÇIKIŞ TANIMLAMALARI
BANKSEL TRISA ;BANK1 E GEÇİŞ YAP
MOVLW H'FF'
MOVWF TRISA ;PORTA NIN BÜTÜN PİNLERİNİ
GİRİŞ YAP
CLRF TRISB ;PORTB NİN
BÜTÜN PİNLERİNİ ÇIKIŞ YAP
BANKSEL PORTB ;TEKRAR
BANK0 A GEÇ
CLRF PORTB ;PORTB Yİ SIFIRLA
;ANA PROGRAM
BUTON_KONTROL
BTFSS PORTA,0 ;BUTONU KONTROL ET BASILI DEĞİLSE(1) 1 SONRAKİ KOMUTU ATLA
GOTO LED_YAK ;LED YAK A GİT
LED_SONDUR
BCF PORTB,0 ;LEDİ SÖNDÜR
GOTO BUTON_KONTROL ;BUTON_KONTROL
A GİT
LED_YAK
BSF PORTB,0 ;LED İN BAĞLI OLDUĞU PİNİ 1 YAP
GOTO BUTON_KONTROL ;BUTON_KONTROL
A GİT
END ;KODUN
BİTİMİ
Not: Eğer RA6 ve RA7 pinlerini Giriş/Çıkış(I/O) olarak
kullanmak istiyorsanız. Harici osilatör kullanmak yerine PIC16F628A'nın
içinde bulunan 4 MHz dahili osilatörü kullanabilirsiniz. Bunun için
devrede ve kodda birtakım değişiklik yapmanız gerekir: Devrede RA6 ve
RA7 pinlerine bağlı bulunan elemanların yani kristal ve
kapasitörlerin bağlantısını kesin ve kodda _XT_OSC yerine _INTRC_OSC_NOCLKOUT yazın.
Ayrıca Reset opsiyonunu kullanmak istemiyor ve bu pini giriş olarak
kullanmak istiyorsanız. RA5/MCLR pinine bağlı tüm elemanların ve
yolların bağlantısını kesin kısacası bu pini açıkta bırakın ve kodda _MCLRE_ON yerine _MCLRE_OFF yazın. Şunu unutmayın ki RA5 pinini giriş olarak kullanabilirsiniz ama çıkış olarak kullanamazsınız.
Kodun Çalışma
Mantığı
Buton açık konumdayken yani butona basılmıyorken akım 5 V
luk kaynaktan 4,7kohm ve 100 ohm luk dirençler üzerinden RA0 pinine doğru akar
yani bu pin lojik 1 seviyesine çekilir. Eğer butona basılıyorsa akım RA0
pininden toprağa(0) doğru 100 ohm luk direnç ve buton üzerinden akar, yani bu
pin lojik 0 seviyesine çekilir. Bu kodda da yaptığımız RA0 pinini sürekli
"BTFSS" komutuyla kontrol edip butona basılıyorsa yani RA0 pini 0 sa LED i
yakmak, butuna basılmıyorsa yani RA0 girişi 1 se LED i söndürmek.
|