BIRI BENI AYDINLATSIN LUTFEN

Başlatan kontiki, 17 Şubat 2016, 05:22:57

kontiki

arkadaslar sımdı ben bu ıse yenı basladım yenı yenı ogrenıyorum ınternetten vıdeolar sızlerın verdıgı dersler falan sımdı bır komut gordum denedım 1.butona basınca led bır kez yanıyo ıkıncıde ıkıke gıbı
burda ekte verdıgım dosylarda komutlar var ama butonlara kapalıdan acıga getırdıgımde PORTA da hala kapalı gıbı duruyo nedenı ne bunun aynı ıslemlerı yapıyorum aynı pıcı kullanıyorum ınternettekıyle
onun kı oluyo benımkı olmuyor nedenı nedır?
sımdıden tessekur ederım ılgınıze.

vıdeonun lınkı bu burdakı ndc komutu
https://www.youtube.com/watch?v=TQuTqsMhwCM



burdakı 1,2,3,5 ıncı butonları kapalı yapıp sonra actım bu sekılde kaldı ve  led devamlı yanıp yanıp sonuyo

kontiki

ayrıca bır sorum daha olucak bu benzer işlemi baska bır kod kulanarak daha yaptım ancak pic16f628a
da calsııyo ama 16f887 de calısmıyo her mikrodenetliyicide kodlama  farklılıklarımı var?
veya nedenı nedır?
bunun da dosyaları ektedir

ete

Daha öğrenmen gereken epeyce bilgi var. Maalesef programlama işine direk balıklama dalmışsın ama bazı şeyleri birlikte öğrenmen gerekecek.

1. Her işlemci farklı özelliklere sahiptir. Bu özllikler arasında bazılarının A portu veya diğer portlar analog pin olarak çalışacak şekilde yapılandırılmışlardır. Ne yazıkki bu özellik ilk çalışmada seçilmiş olarak gelir. Kullandığın 628 işlemcide A portu komparatör olarak açılır ve buda bir analog özelliktir. O pinleri digital kullanmak için komparatör özelliğği kapatılmalıdır. Data sheet de nasıl olacağı yazıyor ama ben söyleyeyim. CMCON=7 vermen gerekiyor programın başında.
877 olan işlemcide ise A portu direk Analog dur bunuda kapatıp o pinleri digital kullanmak için ADCON1=7 komutunu vermen gerekiyor. Bu aşamadan sonra pinler digital olur.

2. Programların bir yazılma prosedürü vardır.  Bu kapsamda en başta sigorta ayarları verilmelidir. Bu ayarlar işlemciyi çalışma ortamında yönlendirirler. SOnra işlemci hangi frekansta (hangi kristal ile) çalışacak ise ona ait bilgi verilirki program içinde kullandığın Pause komutları doğru çalışsın. Bununda yolu DEFINE OSC 4 (yani 4 Mhz lik osc frekansı ile çalışacağım demektir)
SOnra giriş çıkış pinleri belirlenir. Hangi pinler giriş hangileri çıkış olacaksa bunu TRISA - TRISB registerleri ayarlar. Bu registerlere verilen değerin binary olarak "1" olan bitleri giriş pinine karşılık gelir. "0" olan bitler ise çıkış demektir.
Senin A portu için yaptığın gibi.

3. Her programa değişkenler ve ön ayarlamalar yapıldıktan sonra yaklaşık 300 ms lik bir açılış gecikmesi verilmesi uygun olur. Bu gecikme esnasında işlemci verilen değerleri registerlerine yerleştirip çalışmaya hazır hale gelir.

4. Bundan sonra artık ne yaptırmak istiyor ise komut vererek yaptırmalısın.

5. Dallanma yada yönlendirme komutları iki türlüdür. GOTO ETIKET ,koşulsuz olarak ETIKET ismine gider ve orada kalır yada oradan başka bir yere yine GOTO ile gönderilmelidir.
Diğeri ise GOSUB dur bu koşullu göndermedir. GOSUB ETIKET şeklinde kullanılldığı zaman program ETIKET 'e gider ancak ordaki işlemleri yaptıktan sonra o bölümün sonunda bir RETURN komutu olmalıdır ve onu görüncede ilk ayrıldığı yere geri döner. Dönmek zorundadır. çünki ayrılırken STACK denilen ara hafızaya ayrılma adresini yazar ve ilk RETURN komutunu görünce STACK dan o adresi geri alıp geldiği yeri bulur. Şayet GOTO ile gidip RETURN ile dönmeye kalkar yada GOSUB ile gidip GOTO ile dönmeye kalkarsanız program bir müddet sonra STACK hatası verir ve muhtemelen kilitlenip kalır.

6. NCD komutu yanındaki sayının en yüksek değerlikli bit numarasını almak için kullanılır. Örnek vereyim,
SAYI=%01001000 ise A=NCD SAYI dediğiniz zaman A=6 olur. Çünki en yukarıda (yada en solda olan "1" biti 6cı bittir)

Ete


kontiki

#3
cok tessekur ederım ete bey dırek dalmadım konuya elektronık ogrenıyorum esas su anda bıraz sıkılganım kendımı motıve etmek ıcın arada bırseyler yaratmam lazım yoksa motıvasyonum dusuyo ınternette sızın derslerınız bıde bu yukardakı beyfendının vıdeolaro 10 adet onun sırasıyla gıdıyorum dıkleksı hastasıyım ogrenım farklılıklarım var sızın 2.dersınızdekı and or xor u algılayamadım bu yuzden baska kaynaklara bakarken bu vıdeoyu buldum onlara baslıyım deıdm benım garıbımı gıden adamınkı calsııyo benımkı calısmıyo aynın ısıs programı aynı malzemeler aynı kodlar benımkı calsımadı 16f628a da tek fark vıdeolarda microcodestudio onun 3+ benımkı 4

cok tessekur ederım

kontiki

Alıntı yapılan: ete - 17 Şubat 2016, 07:44:03
Daha öğrenmen gereken epeyce bilgi var. Maalesef programlama işine direk balıklama dalmışsın ama bazı şeyleri birlikte öğrenmen gerekecek.

1. Her işlemci farklı özelliklere sahiptir. Bu özllikler arasında bazılarının A portu veya diğer portlar analog pin olarak çalışacak şekilde yapılandırılmışlardır. Ne yazıkki bu özellik ilk çalışmada seçilmiş olarak gelir. Kullandığın 628 işlemcide A portu komparatör olarak açılır ve buda bir analog özelliktir. O pinleri digital kullanmak için komparatör özelliğği kapatılmalıdır. Data sheet de nasıl olacağı yazıyor ama ben söyleyeyim. CMCON=7 vermen gerekiyor programın başında.
877 olan işlemcide ise A portu direk Analog dur bunuda kapatıp o pinleri digital kullanmak için ADCON1=7 komutunu vermen gerekiyor. Bu aşamadan sonra pinler digital olur.

2. Programların bir yazılma prosedürü vardır.  Bu kapsamda en başta sigorta ayarları verilmelidir. Bu ayarlar işlemciyi çalışma ortamında yönlendirirler. SOnra işlemci hangi frekansta (hangi kristal ile) çalışacak ise ona ait bilgi verilirki program içinde kullandığın Pause komutları doğru çalışsın. Bununda yolu DEFINE OSC 4 (yani 4 Mhz lik osc frekansı ile çalışacağım demektir)
SOnra giriş çıkış pinleri belirlenir. Hangi pinler giriş hangileri çıkış olacaksa bunu TRISA - TRISB registerleri ayarlar. Bu registerlere verilen değerin binary olarak "1" olan bitleri giriş pinine karşılık gelir. "0" olan bitler ise çıkış demektir.
Senin A portu için yaptığın gibi.

3. Her programa değişkenler ve ön ayarlamalar yapıldıktan sonra yaklaşık 300 ms lik bir açılış gecikmesi verilmesi uygun olur. Bu gecikme esnasında işlemci verilen değerleri registerlerine yerleştirip çalışmaya hazır hale gelir.

4. Bundan sonra artık ne yaptırmak istiyor ise komut vererek yaptırmalısın.

5. Dallanma yada yönlendirme komutları iki türlüdür. GOTO ETIKET ,koşulsuz olarak ETIKET ismine gider ve orada kalır yada oradan başka bir yere yine GOTO ile gönderilmelidir.
Diğeri ise GOSUB dur bu koşullu göndermedir. GOSUB ETIKET şeklinde kullanılldığı zaman program ETIKET 'e gider ancak ordaki işlemleri yaptıktan sonra o bölümün sonunda bir RETURN komutu olmalıdır ve onu görüncede ilk ayrıldığı yere geri döner. Dönmek zorundadır. çünki ayrılırken STACK denilen ara hafızaya ayrılma adresini yazar ve ilk RETURN komutunu görünce STACK dan o adresi geri alıp geldiği yeri bulur. Şayet GOTO ile gidip RETURN ile dönmeye kalkar yada GOSUB ile gidip GOTO ile dönmeye kalkarsanız program bir müddet sonra STACK hatası verir ve muhtemelen kilitlenip kalır.

6. NCD komutu yanındaki sayının en yüksek değerlikli bit numarasını almak için kullanılır. Örnek vereyim,
SAYI=%01001000 ise A=NCD SAYI dediğiniz zaman A=6 olur. Çünki en yukarıda (yada en solda olan "1" biti 6cı bittir)

Ete



ete bey bıde rıca etsem bana bunarı bellı bır sırayla ve detaylarıyla  anlatan en bastan bır kıtap onerebılırmısınız ınternetten vıdeolardan hep bır eksık oluyo zaten onu bılıyorlardır mantıgından

ete

Hiç bir fikrim yok maalesef.

Ete

Powered by EzPortal