pic assembly kod problemi!!!!

Başlatan achilis, 19 Temmuz 2006, 14:28:17

achilis

arkadaşlar pic assembly kullanmaya yeni başladım ve kendime ufak bir proje yapayım dedim bu projemde 3 giriş, iki çıkış portu var, portA giriş ,portb çıkış.  porta birinci bit logic sıfır olunca tüm çıkışlar resetleniyor , ikinci butona basınca portbnin 2. çıkışı aktif , 3. butona basınca 3. çıkış aktif ve arayada 5 sn lik gecikmeler serpiştirdim ama bu programı derleyince tam 34 hata verdi işin içinden çıkamadım nasıl bir mantık izlemem lazım????

CoşkuN

Kodları ve hataları görmeden nasıl yardımcı olabiliriz ki? Zaten hata kodları sana neyi yanlış yaptığını söylüyordur.

OG

Program yazan, devre tasarlayan, dizayn yapan vs kişiler önce analitik düşünmeyi öğrenmeli.

Ne yaptığını,
Nasıl Yaptığını,
Ne gibi problem yaşadığını

yeterince anlatamadıktan sonra

Ne tür yardım bulabilir???

Son günlerde bu tür sorular neden çoğaldı?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

achilis

og arkadaşım sen belki çok iyi analitik düşünebilirsin  analitik düşünme programlamada bir şart olduğunun farkındayım hatta heryerde gerekli kanımca... ama programlama olarak yetersiz bilgisi olan insanlara bu şekilde rencide edici bi tavır takınmanın kime ne gibi faydası olabilir!!  diye sormak istiyorum :?:  
yukarda anlatmaya çalıştığım programı yolluyorum ,iyi çalışmalar
;================3phasemotorkontrolu========
         LIST  P16F84A
         INCLUDE  "P16F84A.INC"
SAYAC1   EQU       h'0C'
SAYAC2   EQU       h'0D'
SAYAC3   EQU       h'0E'
         CLRF      PORTB
         BSF       STATUS,5
         CLRF      TRISB
         MOVLW     h'FF'
         MOVWF     TRISA
         BCF       STATUS,5
         CALL      GECIKME
BASLA
         BTFSC     PORTA,1  ;PORTA BIRINCI BIT SIFIR MI
         GOTO      ILERI    ;PORTA BIRINCI BIT 1SE ILERI ETIKETINE GIT
         MOVLW     h'00'
         MOVWF     PORTB
ILERI
         BTFSC     PORTA,2  ;PORTA IKINCI BIT SIFIR MI
         GOTO      GERI     ;PORTA IKINCI BIT 1SE GERI ETIKETINE GIT
         CALL      GECIKME  
         MOVLW     h'01'
         MOVWF     PORTB
GERI
         BTFSC     PORTA,3  ;PORTA UCUNCU BIT SIFIR MI
         GOTO      BASLA    ;PROGRAMI TEKRAR TEST DURUMUNA AL
         CALL      GECIKME
         MOVLW     h'02'
         MOVWF     PORTB
DONGU
         GOTO      DONGU
;===================GECIKME_ALT_PROGRAMI==========
GECIKME
         MOVLW     h'19'
         MOVWF     SAYAC1
DONGU1 
         MOVLW     h'FF'
         MOVWF     SAYAC2
DONGU2
         MOVLW     h'FF'
         MOVWF     SAYAC3
DONGU3 
         DECFSZ    SAYAC1
         GOTO      DONGU3
         DECFSZ    SAYAC2
         GOTO      DONGU2
         DECFSZ    SAYAC1
         GOTO      DONGU1
         RETURN


Lütfen Kodlarımızı Code Tagları (#) Arasına Alalım.

CoşkuN

Programda yanlış birşey göremedim ben,ne hatası verdi acaba?

OG

Kimseye tavır falan yok.

Alıntı Yapama programlama olarak yetersiz bilgisi olan insanlara
Burada herkes bir şekilde yetersiz ve yardımlaşma peşinde.

Adam program yazmış program niye çalışmıyor, ne yapayım? (Ortada program yok).
Yakışır Cevap= Programı çalıştır.

Adam devre yapmış, devrem yanlış çalışıyor? (Ortada devre yok).
Yakışır Cevap= Devreni düzelt.

Bunu okumanı tavsiye ederim.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Logan

Yazdığın programda gördüğüm tek hata, gecikme alt programında DECFSZ komutlarını kullanış biçimindir.
"DECFSZ SAYAC1" değil,
"DECFSZ SAYAC1,F" olmalıdır.Yani "SAYAC1" registerinden eksilttikten sonra, tekrar aynı registere yazman için yanına ",f" koymalısın.Bunun dışında herhangi bir hata görünmüyor.Derleyicinin verdiği hata kodlarını buraya yazabilirsen iyi olur.Kolay gelsin.
İmza.

TONY

merhaba arkadaşım.
benim gördüğüm en önemli hata program sonuna yazmadıgın 'END' dir

MICROCEBEL

bak güzel kardeşim sana tavsiyem program başlangıcına reset vektör adresi ORG H'00' I yaz ve programını belirli bir adresten başlat ondan sonra gecikmelerindeki sayaçlardan 1 eksiltiyorsun ama tekrar onun üzerine eksilttiğin değeri yazmıyorsun onun haricindede programın sonuna end koymalısın.Bunları düzelttiğin taktirde çalışmama gibi bir durumu yoktur.Kolay gelsinnnn....

toxin

BAK BABACAN BENİMDE GÖRDÜĞÜM HATA ARKADAŞIN BELİRTİĞİ GİBİ
DECFSZ  SAYAC1,F OLMALI

FAKAT BİRDE DERLAYİCİ OLARAK NE KULANIYORSUN
BEN PİC SİMULATOR IDE PROG.KULANIYORUM COK GÜZEL FAKAT MPLAP
TAN FARKLI YÖNLERİ VAR

toxin, küçük harf ile lütfen.

profahmet

yazılımdaki hatalarını söyleyim
1- LIST P16F84A bu yanlış doğrusu bu   LIST P=16F84A
2- DECFSZ    SAYAC1  bu yanlış  doğrusu bu DECFSZ    SAYAC1,F
3- END komutunu ekle

dediklerimi yapıp derle bakalım halada bukadar çok hata verirse derleyicin
INCLUDE  "P16F84A.INC"  yazmacını tanımıyor olabilir.
kolay gelsin...