PIC İLE UFAK BİR DEVRE YARDIM EDERMİSİNİZ

serseri32

Üye
Katılım
12 Ocak 2010
Mesajlar
10
Puanları
1
pic 16f84a ile 2 buton 1 led kontrolü yapmak istiyorum fakat bu butonlar vaviyen anahtar gibi çalışması gerekiyo bu devreyi pic e nasıl yazabilirim yardımcı olurmusunuz ?
 
;PIC 628
@ DEVICE PIC16F628 'işlemci 16F628
@ DEVICE PIC16F628, WDT_ON 'Watch Dog timer ACIK
@ DEVICE PIC16F628, PWRT_ON 'Power on timer açık
'@ DEVICE PIC16F628, PROTECT_OF 'Kod Koruma kapalı
@ DEVICE PIC16F628, MCLR_OFF 'MCLR pini kullanılMıyor.
@ DEVICE PIC16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör
@ DEVICE PIC16F628, XT_OSC ;HS İse XT yerine HS yaz

CMCON=7

TRISB=0;PORTB CIKIS TANIMLANDI
TRISA=255;PORTA GIRIS TANIMLANDI

PORTA=0:pORTB=0

LOOP:
IF PORTA.0=0 OR PORTA.1=0 THEN ;PORTA.0 VE PORTA.1 DE BUTON VAR
PAUSE 100
TOGGLE PORTB.0 ;PORTB.0 DA LEDIMIZ VAR.
PAUSE 500
ENDIF
GOTO LOOP
 
;PIC 628
@ DEVICE PIC16F628 'işlemci 16F628
@ DEVICE PIC16F628, WDT_ON 'Watch Dog timer ACIK
@ DEVICE PIC16F628, PWRT_ON 'Power on timer açık
'@ DEVICE PIC16F628, PROTECT_OF 'Kod Koruma kapalı
@ DEVICE PIC16F628, MCLR_OFF 'MCLR pini kullanılMıyor.
@ DEVICE PIC16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör
@ DEVICE PIC16F628, XT_OSC ;HS İse XT yerine HS yaz

CMCON=7

TRISB=0;PORTB CIKIS TANIMLANDI
TRISA=255;PORTA GIRIS TANIMLANDI

PORTA=0:pORTB=0

LOOP:
IF PORTA.0=0 OR PORTA.1=0 THEN ;PORTA.0 VE PORTA.1 DE BUTON VAR
PAUSE 100
TOGGLE PORTB.0 ;PORTB.0 DA LEDIMIZ VAR.
PAUSE 500
ENDIF
GOTO LOOP


bunu yazmışsınız teşekkürler ama bunda bekleme süreleri var yani ben bekleme ile değil de normal yapmam lazım bide microcode de kodlar lazım 2 anahtar olucak yani aynı vaviyen anahtar gibi bir anahtardan basıcaz led yanıcak diğerine bastığımızda sönücek ama hepsi tek tek de ledi yakıp söndürebilicek pic16f84a da lazım şimdiden teşekkürler
 
yukarıdakı kod aynen vavıyen anahtar gıbı calısıyor.Denememıssın.Isısde deneme yapabılırsın.yukarıdakı kodları microcode nin içine kopyala program calısır.Bekleme surelerıne gelınce;anahtar arkını sondurmek ıcındır.Yanı vavıyen calısmayı yapıyor.f84,yerıne 628 kullanmanı tavsiye ederim.yınede f84 kullanacam dıyorsan microcode içinde pıc ı 84 olarak seçmen yeterlı.f 84 de cmcon uyarısı alırsan bu satırı ıptal edersın.kolay gelsın..
 
yukarıdakı kod aynen vavıyen anahtar gıbı calısıyor.Denememıssın.Isısde deneme yapabılırsın.yukarıdakı kodları microcode nin içine kopyala program calısır.Bekleme surelerıne gelınce;anahtar arkını sondurmek ıcındır.Yanı vavıyen calısmayı yapıyor.f84,yerıne 628 kullanmanı tavsiye ederim.yınede f84 kullanacam dıyorsan microcode içinde pıc ı 84 olarak seçmen yeterlı.f 84 de cmcon uyarısı alırsan bu satırı ıptal edersın.kolay gelsın..

Denedim teşekkürler vaviyen anahtar gibi çalışıyor ama bu pauseler olmadan yapamazmıyız bu devreyi ? yani vaviyen gibi sürekli yansa sönmese ?
 
Evet sureklı yanıp sonme nedenı butona basılı tutmandan kaynaklanır.Burdakı gecıkmeler butona basıp elımızı cekmek ıcın gereken sure ıdı.Aslında bu seklı ıle eksıklıgı var.İşin bu kısmını sormanı beklıyordum.
Bu sorunu su sekılde çözebilirsin:
butona basıldı ıse,program çıkışın konumunu degıstırsın.ardından butonun bırakılmasını beklesın.Buton bırakılıp tekrar basılmış ise tekrar aynı işlemi yapsın.
Bunu yapamaya çalış.eger bu şekilde yaparsan tam aradıgın vaviyen çalışma olur.
Programı hemen yazıp paylaşabilirim ama sana iyilik yapmış olmam.Biraz deneme yap.Olmazsa programı yazıp burda paylaşırım.
 
sana şöyle söyliyim 2 saat pc başınca uğraştım bu devre hakkında en son geldiğim nokta şuydu 1.butona basıp ledi yakıyoruz 2.butona bastığımda söndürüyorum ancak 2. butonla ledi yakıp 1.butonla söndüremiyordum Bu devreyi asla unutmayacağım kesin çok uğraştırdı :)
 
;pıc 628
trısa=255;porta nın tamamı gırıs yapıldı
trısb=0 ;portb nın tamamı cıkıs yapıldı
;--------------------------------------------------------
symbol vavıyen_1=porta.0;1.vavıyenın baglı oldugu pın
symbol vavıyen_2=porta.1;2. '' '' '' ''
symbol lamba=portb.0 ; lambanın baglı oldugu pın
;--------------------------------------------------------
porta=0:portb=0;ılk çalısmada portları sıfırla
;--------------------------------------------------------

basla:

ıf vavıyen_1=0 or vavıyen_2=0 then
toggle lamba
bırak:
ıf vavıyen_1=0 or vavıyen_2=0 then bırak
endıf
goto basla
end

bı dene calısması lazım.
 
;pıc 628
trısa=255;porta nın tamamı gırıs yapıldı
trısb=0 ;portb nın tamamı cıkıs yapıldı
;--------------------------------------------------------
symbol vavıyen_1=porta.0;1.vavıyenın baglı oldugu pın
symbol vavıyen_2=porta.1;2. '' '' '' ''
symbol lamba=portb.0 ; lambanın baglı oldugu pın
;--------------------------------------------------------
porta=0:portb=0;ılk çalısmada portları sıfırla
;--------------------------------------------------------

basla:

ıf vavıyen_1=0 or vavıyen_2=0 then
toggle lamba
bırak:
ıf vavıyen_1=0 or vavıyen_2=0 then bırak
endıf
goto basla
end

bı dene calısması lazım.


SÜREKLİ YANIP SÖNME YAPIYOR
 

Yeni mesajlar

Forum istatistikleri

Konular
128,376
Mesajlar
917,105
Kullanıcılar
450,251
Son üye
Salih.38

Yeni konular

Geri
Üst