pıc 16f84

Başlatan topaz65, 12 Temmuz 2013, 23:50:05

topaz65

7 tane led olsun ve bunları pıc e baglayalım ve ıkı tanede buton olsun enerjı verıldıgınde 1 nolu led yansın 1.butona teker teker basıldıgında 2.led 3.led yansın bır yanarken dıgerı sonsun ve bu işlemi 7.lede kadar devam ettirsin en son 7.ledden 1.e atlamasın 7 de kalsın 2. buton da bunun tersini yapsın
yardımlarınız ıcın tesekkur ederım

ete

Alıntı yapılan: topaz65 - 12 Temmuz 2013, 23:31:04
ete hocam kolay gesın siz de olmassanız halıımız nıce olur bılmıyorum her sey ıcın tesekkur ederım
konu su:
elimizde 7 tane lamba olsun ve bunları pıc e baglayalım daha sonra elimizde 2 tanede buton olsun devreye voltaj verelim pıc e ne zaman voltaj verilirse verilsin ilk once 1 nolu led yanacak 1.butona tek tek basıldıgında bir sonrakı led yanacak gelelim 2 butona  tek tek basıldıgında geriye dogru yanacak
bunu programlamak nasıl hocam yardımcı olabılırmısınız
saygılarımla
butonlar porta.0 ve a.1 de bağlı , ledler ise portb de sırası ile bağlı.
Ledler için Led değişkeni tuşlar için tus1 ,    Tus2 değişkenlerini kullanıyoruz
Daima 1 nolu lamba yanarak baslaması için basla satırından evvel,
Led=1 diyoruz.
Basla:
Portb= led
If tus1=0 then
  Led=led*2+1
  If led>127 then led=127
Endif
If tus2=0 then
  Led=led/2
  If led=0 then led=1
Endif
While tus1=0 or tus2=0:wend
Pause 100
Goto basla
End

Hepsi bu kadar.
Ete

onurinci

hocam saygılar yaz günü boşluk işte yazdığınız kodu denedim ,evet yazdığınız gibi davranıyor, fakat ilk enerji verildiğinde Port B0 aktif olmadı bir şeylere basınca aktif hale geldi sonrası istenen gibi çalışıyor benmi beceremedim acaba..?
@ Device PIC16F628A,WDT_OFF,PWRT_ON,PROTECT_OFF, CPD_OFF,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUT,LVP_OFF
DEFINE OSC 4 'Oscillator speed in MHz

CMCON = 7 ' Sets Digital Mode
TRISA = %00000011
PORTA = 0           
TRISB = %00000000
PORTB = 0           
VRCON.7 = 0 ' Turn Off Voltage Reference
'OPTION_REG.7=0 ' Pullup Enables


Led var word
symbol tus1=porta.0
symbol tus2=porta.1

Basla:
Portb= led
If tus1=0 then
  Led=led*2+1
  If led>127 then led=127
Endif
If tus2=0 then
  Led=led/2
  If led=0 then led=1
Endif
While tus1=0 or tus2=0:wend
Pause 100
Goto basla
End

topaz65

ete hocam devreyi dizayn edermisiniz rica etsem hex dosyası ıle birlikte tesekkur ederim ete hocam

topaz65

MPASM dosyasını indirdim ve kurdum hex dosyasına donustureyım dedım hata verdı anlamadım hocam devre dasarım duzenegınıde bılmıyorum

ete

Onurinci,
Yazdıklarımı dikkatlice okumanı öneririm. Ne demişim bak. Basla satırından evvel led=1 komutunu vermek lazım bu ilk ledi yakacak komuttur. Bunu vermezseniz led yanmaz. Çünkü led=0 olarak açılır.
Bu dediğimi yap ve basla satırından evvel 300 ms açılış gecikmesi verirsen sistem çalışır.

Kaç kişi ilgileniyor bu işle? 


Topaz65,
Bu bir basic programıdır. Basic derleyicisi ile derlenir. Derleme ya basic in pm.assembler i ile yada mpasm nin kendi assembleri ile yapılabilir. Ama sabit olan bir şey varki pbp derleyicisi olmadan yapılamaz.
Bu konuda ne yapılması gerektiği  aşağıdaki linklerde anlatılmıştır.

http://etepic.com/index.php/topic,26.0.html
http://etepic.com/index.php/topic,300.0.html

Ete

onurinci

Hocam saygılar haklısınız dikkat etmemişim,son uyarılarınızla birikte fevkalade çalıştı ,problem arkadaşın ben sadece amatörce kendimi geliştirmeye çabalıyorum,
iyi hafta sonları dilerim.

topaz65

hocam anlatılanları ve ne demek ıstedıgınızı anladım fakat ete hocamın yazmıs oldugu bır program var yukarıda 2 tane ben bunları not defterıne kaydettım daha sonra uzantılarını asm yaptım asebler komutuna bastıktan sonra program hata veriyor yanı butun mesele hex dosyası ayrıca 16f84 un voltaj ucları ve 4 mhz krıstal ucları bellı gerıye ledler ve ıkı tane butonlar kalıyor baglantıda hata yapmak ıstemıyorum


ete

#8
Topaz,
Devre ve program dosyaları ilişiktedir.

Ete



edit: dosya yenilenmiştir

topaz65

hocam cok tesekkkur edeim ALLAH'a emanet olun ayrıca diğer yorumcu arkadasla ve emegı gecenlere ayrı ayrı tesekkur ederim
saglıcakla kalın

topaz65

merhaba ete hocam
bugün devreyi tasarladım semasını verdıgınız gıbı devreyı yaptım fakat soyledıgım gıbı ılk acılısta 1 nolu led yanıyor 2.ledi yaktıgım zaman 1 led de bırlıkte yanıyor yanı ledlerın bırı sonup dıgerı yanmıyor fakat geriye geldıgımızde sorun olmuyor hocam bırde ledler arası gecısler hızlı degıl yanı bırıncı ledı sondurmek ıstedıgımde ıslemsel olarak hızlı degıl az da olsa 1 den ıkıye gecıste 1.ledın azda olsa yandıgını fark edebılıyorrsunuz bu ıslemın olmasını ıstemıyorum yanı ıkıncı ledı yakmak ıstedıgımızde bıraz daha hızlı sonmesını ıstıyoruz
saglıcakla kalın hocam

ete

Dosyayı yeniledim. AYnı yerden yeniden yükle ve dene bakalım.

Ete

topaz65

slm ete hocam
en son yazdıgınız hex dosyasını yukleyıp calıstırdım fakat ufak bır sorun var gibi
1-2-3-4-5-6 lede kadar her sey normal fakat 7 lede geldıgımızde led 0.5 sanıye gec ve yavas yavas ısık sıddetı artıyor
gerıye dosnuste hıc bır sorun yok

ete

7 . Led de özel bir şey yok. Ya led farklıdır yara işlemci çıkışı farklıdır  yada kullandığın seri direnç toleransından kaynaklanıyordur. Yapacak bir şeyim yok maalesef.
Ete

serseried

ete hocam benim bu konuda bir sorunum var devreyi ısisde kurdum, pic programlayıcı ilede pice attım ama çalışmadı. sonra sizin sigorta ayarlarını eklemek istedim ondada MicroCode Studio proğramı hata verdi yardımcı olursanız sevinirim. dosyalar ekdedir
@ DEVICE PIC16F84A
@ DEVICE PIC16F84A, WDT_Off
@ DEVICE PIC16F84A, PWRT_ON
@ DEVICE PIC16F84A, PROTECT_OFF
@ DEVICE PIC16F84A, XT_OSC

DEFINE OSC 4


    TRISB=0
    BASLA
    PORTB=0
    PAUSE 500
    PORTB=%00000001
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    PAUSE 500
    PORTB=PORTB<<1
    GOTO BASLA
  END 

Powered by EzPortal