ProBasic PİC16F877 Led Yakma

Başlatan d4rkpi0n, 19 Ekim 2014, 01:13:06

d4rkpi0n

Arkadaşlar merhaba, bu programı yeni kullanmaya başladım ama pek anlamış değilim. 1-2 kod denedim ama PİC'i tanımı kabul etmiyor. Üst taraftan seçtiğimiz için olabilir mi acaba? Sizin yardımınızı bekliyorum.
Eski konulardaki tanımlamalara baktım ama anlatımların çoğunu gerçekleştiremedim çünkü baya değişiklik olmuş sanırım.
Device Pic 16f877
high port d.0
high port d.2
high port d.4
high port d.6

Pic üzerindeki D bacağına bağlı olan ledlerden 0, 2, 4 ve 6 numaralı ledleri yakmam gerekiyor.

ipek

kristal taktınmı ?. pic'in 1 nolu ayağına 5 volt verdinmi ?.
başlıkta Picin sigorta ayarlarını yaptınmı ?.yoksa simulayondamı çalıştırıyorsun.?

ete

Device Pic 16f877
high port d.0 şeklinde bir tanımlamayı PBP kabul etmez. Sebebi PORT ayrı D ayrı yazılmış PORTD.0 şeklinde yazılmalı idi.

Madem yeni başladın naçizane bir kaç tavsiyem olsun.
Programa sigorta ayarları vererek başla. Ne anlama geldiklerini aşağıdaki linkten öğrenebilirsin.
http://etepic.com/index.php/topic,1687.0.html
Ben kullandığın işlemci için bu seferlik vereyim bu ayarları, Şayet makinan 64 bitlik bir PC ise derlemeyi MPASM de yapman gerekir. 32 Bitlik makina ise normal derleme yapabiliyorsun. Sigorta ayarlarıda bu iki konuma göre değişmektedir. Linkte bu konu ile ilgili açıklama var.
Diyelimki 32 bit makina ile çalışıyorsun.
@ DEVICE pic16F877A                              'işlemci pic16F877A
@ DEVICE pic16F877A, WDT_OFF              'Watch Dog timer Kapalı
@ DEVICE pic16F877A PWRT_OFF            'Power on timer kapalı
@ DEVICE pic16F877A, PROTECT_OFF         'Kod koruma kapalı
@ DEVICE pic16F877A, XT_OSC   

Daha sonra hangi frekansta çalışıtığını işlemciye söylemelisin
Define OSC 4

Daha sonra kullanmadığın özellikleri kapatmalısın. Mesela 16F877A da A portu default olarak Komparatör şeklinde açılır. Bize lazım değil onu kapatalım,  CMCON=7
Analog pinlerde lazım değil onuda kapatalım  ADCON1=7

Şimdi hangi pinler giriş hangi pinler çıkış   onu ayarlayalım. Giriş pinlerine "1" çıkış pinlerine "0" verilmeli
TrisA=%00000000
TrisB=%00000000
Trisc=%00000000
TrisD=%00000000
TrisE=%00000000

Sonra varsa değişkenleri tanımlamalısın. Mesela,
SAYI var BYTE
RAKAM VAR WORD
KES   VAR BIT 

Sonra bir açılış gecikmesi vermelisin PAUSE 200 şeklinde.
Sonra programa başlamalısın. Genellikle bir etiket adı kullanılır ve iş bitiminde tekrar aynı etikete yönlendirilir.

BASLA:
            HIGH PORTD.0
            PORTD.1=1  'bu komut yukarıdaki ile aynı işi yapar. Daha az kod üretir.
GOTO BASLA

Hepsi bu kadar.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

d4rkpi0n






Hocam az çok denedim ama pek anlamış değilim valla yardımcı olursan çok sevineceğim. Hoca illa yapacaksınız diyor bu hafta için ne yazık ki puanda kesti...

Önce üstten 16F877 pic'i seçiyorum. Dediğiniz gibi PORT'ları büyük falan yazıyorum ama sisteme kabul ettiremiyorum. ''High'' yazısını kabul ediyor ama ''PORTD.0'' yazısını kabul etmiyor. İki adette program görüyorum bir ondan bir bundan deniyorum ama tık yok ne yazık ki.




İçin içinden çıkabilmiş değilim haftaya pazartesi teslim etmem gereken iki ödev var yardımınızı bekliyorum. Özellik ''ete'' hocam çok çok teşekkür ederim. Biraz daha yardımcı olabilirsen vallahi çok makbule geçecek.

rck8942

ETE hocanin son yazisini dikkatlice okumamissin. Screenshot unda nerde sigorta ayarlarin ? nerde Komparatör pinlerinin kapatilisi ?

@ DEVICE pic16F877A                              'işlemci pic16F877A
@ DEVICE pic16F877A, WDT_OFF              'Watch Dog timer Kapalı
@ DEVICE pic16F877A PWRT_OFF            'Power on timer kapalı
@ DEVICE pic16F877A, PROTECT_OFF         'Kod koruma kapalı
@ DEVICE pic16F877A, XT_OSC  

Define OSC 4
CMCON=7
ADCON1=7

TrisA=%00000000
TrisB=%00000000
Trisc=%00000000
TrisD=%00000000
TrisE=%00000000

Pause 200

BASLA:
                               'HIGH PORTD.0
            PORTD.1=1  'bu komut yukarıdaki ile aynı işi yapar. Daha az kod üretir.
GOTO BASLA
Elektroniker für Betriebstechnik

Maxim

ayrıca
şu işaret @
ve 16F877 sonundaki A harfine dikkat
onlar boşuna yazılmadı.

@ DEVICE pic16F877A

d4rkpi0n

Öncelikle ikinizede çok teşekkür ederim. Yalnız işte benim anladığım konu şu hoca ilede bizzat görüştüm bu detayları. Ete hocanın yazısına göre. Hoca herhangi bir sigorta ayarı vs. yapılmayacağını söyledi. Çok çok dikkatli bakıyorum açıyor programı direk olarak Device 16F877 yazıp programlamaya başlıyor. Dedim hocam bunun sigorta ayarı vs. varmış siz mi kurdunuz programı evet dedi peki dedim böyle birşey varmış yok diyor Device 16F877 yazdın mı bitmiştir diyor. Anlamadım bir türlü bu sigorta ayarlarını nasıl ayarlacağımı bilmiyorum denedim ama beceremedim. 16F877 yazısına gelince hoca A komutuna gerek yok dediği için hiç denemedim bile açıkcası.

ipek

16F877 ve 16F877A arasında bir kaç farklılık mevcut. Racon denilen kurallara uymak mecburi.

Hocan yalın 16F877 kullanıyor ise tabiiki

comparatörleri ve ADC portlarını kapatmaya yarayan komutları yazmamak lazım zaten uyarı verir.

ikinci şık ise sadece 16F877'yi seçtiğinde hiç sigorta ayarı yapmıyor,dediğinde ise proglamyıcı her hangi bir sigorta bilgisi göremeyince standart bir sigorta ayarından devam ediyor olabilir kabul edilebilir.

eksik olan ise zaten sayıları oldukça az olan PicBasic ve Proton hocaları ile diyaloğa girmeden denileni yapmanı öneririm,

size öğrettikleri Ana kurallardır her zaman lazım olur. betimlemek gerekir ise otoyu çalıştırmak için emniyet kemerini tak ,vitesi konrol et el frenini kontrol et marşa bas ne ise size tavsiye ettikleri aynıdır.

ete

Hocana bir isim verdim "Default Hoca" çünki öğrendiği kalıbı terketmeyip default değerlerle idare eden biri anlaşılan.
877 ile 877A arasında epeyce fark var. 877 çalışacağı her frekans için özel üretilen bir işlemci. 4 Mhz için yapılmış olanı 20Mhz de çalışmaz.
877A ise daha sonra en son teknoloji ile üretilmiş bir işlemci ve 100Khz den 20Mhz e kadar her frekansta sorunsuzca çalışır.
Üzerinde Komparatör denilen karşılaştırma birimi mevcuttur diğerinde yoktur.
Ayrıca 877 pahalı 877A ucuz bir işlemcidir ve artık 877 yi bulmak da zorlaşmıştır. Bu nedenle sende muhtemelen 877A  bulacaksın. Zira aklın yolu birdir, hem daha iyi, daha çok özellikleri olan hem daha hızlı hem daha ucuz olan bir işlemciyi almak daha akıllıca olur öyle değilmi.

Her işlemci sigorta ayarları olmadan çalışmaz. Bu ayarları sen programa koymaz isen iki şıktan birini tercih etmiş olursun. Bu ayarları ya pic'i programlarken programlayıcı arayüz den bu ayarları girersin yada default denilen ve sigorta ayarı verilmemiş ise kabul edilen ayarları kabullenirsin. Bunu yaparsan şansın varsa işlemci çalışır. Daha doğrusu yarattığın çalışma ortamı default değerler ile uyumlu ise çalışır. Yoksa çalışmaz. Çalışmasıda, doğru çalıştığı anlamına gelmeyebilir. Bu nedenle işin aslı bu ayarları program içinde verip derleyicinin buna uygun kod üretmesini sağlamaktır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Maxim

ete ustanın açıklamasına ek olarak yazmak isterimki

en aptal işlemciden en üst seviyesine kadar hepsinde config (sigorta-fuse) ayarı var.
tabi bu ayarların default bir şekli var, yani hiç birşey yapmazsan eğer programın uygunsa çalışabilir.
belkide hoca bunu bildiği için gerek yok demiştir.

ama bu şuna benziyor
bir minibüse bindin, parayı çıkardın öndekinin omuzuna vurarak parayı uzattın hiç konuşmadın bile.
öndeki para uzattığını bildiği için onu aldı ve öndekine veya şöföre verdi.
sen gene muhtemelen gideceğin yere gideceksin..

ama doğrusu öyle değil böyle olmalı
minibüse bindin, parayı çıkardın, öndekine "pardon 1 beşiktaş uzatabilirmisiniz, teşekkürler" dedin.
artık şöför nereye gittiğini ve kaç para alması gerektiğini biliyor, belki minübüs beşiktaştan geçmiyordu?

diversant

#10
Ete hocam boş ver takma kafaya öğretmeni -demek istedim ki heyecan yapmaya değmez.
Şahsen ben öyle elektronik öğretmenleri tanıyorum ki  bunlardan bazıları direnç degelrerini bile okumaya bilmiyor

:) ayrıca adam nerden bilsin ki  senin PBP uzmanı olduğunu .Adam bilginlin taslamak isterkem cahilliğini ispatlamış olmuş sadece

d4rkpi0n

Herşeyi hallettim tamam kodları vs. kabul ettirdim şuan için önemli olan hocaya gösterip puanı almam gerekiyor. Adam kabul etmiyor yapacaksınız benlik bir sıkıntı yok diyor illa. Yalnız tek alamadığım şuan için .hex uzantılı dosya. Bunu bir türlü beceremedim bu konuda yardım edebilecek birisi varmı? :)