PIC16F628A 48 khz dahili osilatörde sapıttı hayret bişey

Başlatan carirt, 05 Ekim 2011, 21:16:02

carirt

aşağıdaki programda program ilk atıldığında yürüyen ışık çalışıyor daha sonra resete bastığımda program baştan başlamıyor kaldığı yerden başlıyor

elektriği kesip verdiğim zaman yazılım bir daha çalışmıyor
 
aynı yazılım bir daha atıldığında çalışmıyor

ama harici osilatörle yaptığım yürüyen ışık devresinin yazılımını atıp sonra aşağıdaki 48 khz lik dahili osilatörle çalışan programı attığım zaman program çalışıyor ama elektrği kesip verdiğim zaman gene aynı sinema oluyor




      LIST P=16F628A
      INCLUDE   P16F628A.INC
    __CONFIG  _INTOSC_OSC_NOCLKOUT    & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CP_OFF & DATA_CP_OFF
   
;----------------------------------------------------------
DALLAN     EQU            H'20'
           ORG            H'0000'
           BANKSEL        TRISB
           BCF            PCON,3
           CLRF           TRISB
           BSF            OPTION_REG,2       
           BSF            OPTION_REG,1 
           BCF            OPTION_REG,0               
           BCF            OPTION_REG,5
           BCF            OPTION_REG,3
           BANKSEL        PORTB
           CLRF           PORTB
       
DONGU         
           MOVLW          D'0'
           MOVWF          TMR0
           BCF            INTCON,2



KONTROL       
          BTFSS           INTCON,2
          GOTO            KONTROL
          MOVF            DALLAN,W
          CALL            CEVRIM
          MOVWF           PORTB
          INCF            DALLAN,F
          BTFSS           PORTB,7
          GOTO            DONGU
          CLRF            DALLAN
          CLRF            PORTB
          GOTO            DONGU
         




CEVRIM
         ADDWF           PCL,F
         RETLW           B'00000001'
         RETLW           B'00000011'
         RETLW           B'00000111'
         RETLW           B'00001111'
         RETLW           B'00011111'
         RETLW           B'00111111'
         RETLW           B'01111111'
         RETLW           B'11111111'   
         END   

carirt

aynı program  harici osilatör ayarlandımı sorunsuz çalışıyor

dahili osilatörle niye sorun çıkardığını anlamadım

carirt

CEVRIM
         ADDWF           PCL,F
         RETLW           B'00000001'
         RETLW           B'00000011'
         RETLW           B'00000111'
         RETLW           B'00001111'
         RETLW           B'00011111'
         RETLW           B'00111111'
         RETLW           B'01111111'
         RETLW           B'11111111'   
         END   

BU TARZ PROGRAMDA HATA VERİYOR



rogue

Dostum Sorun osilatörde değil senin programa gecikme döngüsü katman lazım. Bu aşağıdaki döngüyü eklersen sorun kalkar diye düşünüyorum. Gecikme zamanınıda aşağıdaki değerlerle oynayarak değiştirebilirsin.
GECIKME
MOVLW H'FF'
MOVWF SAY1
DONGU1
MOVLW H'FF'
MOVWF SAY2
DONGU2
DECFSZ SAY2,F
GOTO DONGU2
DECFSZ SAY1,F
GOTO DONGU1
RETURN

carirt

sorunu düzgün okumamışsın gecikme zaten var

DONGU         
           MOVLW          D'0'
           MOVWF          TMR0
           BCF            INTCON,2

program çalışıyor

z

Alıntı yapılan: carirt - 05 Ekim 2011, 23:41:46
CEVRIM
         ADDWF           PCL,F
         RETLW           B'00000001'
         RETLW           B'00000011'
         RETLW           B'00000111'
         RETLW           B'00001111'
         RETLW           B'00011111'
         RETLW           B'00111111'
         RETLW           B'01111111'
         RETLW           B'11111111'   
         END   

BU TARZ PROGRAMDA HATA VERİYOR

Sorun bu ise, bu tip kodlari romda segment gecislerine getirmekten sakinmalisin.
ORG komutu ile bu kismi romda daha uygun yerlere tasi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muratyamak10

call komutu kullanınıdığında return ile dönülür

sadogan

DALLAN degiskenine başlangıç değri atanmamış.
reset atılınca eski içerigini koruyor.

carirt

Alıntı yapılan: sadogan - 20 Aralık 2012, 23:16:07
DALLAN degiskenine başlangıç değri atanmamış.
reset atılınca eski içerigini koruyor.

benim açtığım konu valla ben o günleri geçtim pic32 ye c dilinde program yazıyorum

sadogan

Alıntı yapılan: carirt - 21 Aralık 2012, 01:33:04
benim açtığım konu valla ben o günleri geçtim pic32 ye c dilinde program yazıyorum
Tebrubelerini aktarırsan seviniriz.

carirt

Alıntı yapılan: sadogan - 21 Aralık 2012, 01:37:01
Tebrubelerini aktarırsan seviniriz.

onda şöyle birşey var pic çevrim tablosu var pic çevrim tablosu kullanımı biraz farklı nette pic çevrim tablosunu araştırın
pic assemblyden başlarsanız temeliniz çelikten daha sağlam olur pic16f628a nın assembly si yeterli

mesaj birleştirme:: 21 Aralık 2012, 01:57:36

program sorunsuz  çalışıyor
enerjiyi kesip verdiğimde yazılım göçüyor :D