Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

PIC16f877 kodlamada hata?

Başlatan ds01, 30 Ekim 2015, 14:45:14

ds01

Programın işleyişi şu şekilde A portunun 1.pinine bağlı butona 10 kere basılınca PORTB nin 0.biti   1 yani high olacak.Isıste simule ettim.Aşağıdaki yazdığım programda mantıken doğru gibi fakat butona bir kere basınca yanıyor.Hatam nerde bulamadım.Yardım ederseniz çok sevinirim.

LIST P=16F877
#include "p16F877.inc"
SAYAC EQU 0x20     ;0x20 adresinde bir adres tanımla
    ORG 0x00
BASLA    
    CLRF PORTB     ;PORTB yi temizle
    MOVLW D'10'    ;W ye 10 değerini yükle
    MOVWF SAYAC    ;SAYAC degiskenine ata
    BSF STATUS,5   ;BANK1 e gec
    MOVLW 0x06     ;W ye 0x06 değerini ata
    MOVWF ADCON1   ;A portlarını digital olarak ayarla
    BSF TRISA,1    ;A portunun 1.bitini giriş olarak ayarla
    BCF TRISB,0    ;B portunun 0.bitini çıkış olarak ayarla
    BCF STATUS,5   ;BANK0 a geç
TEST
    BTFSS PORTA,1  ;PORTA nın 1.biti 1 mi? 0 ise tekrar test et.
    GOTO TEST
    NOP            ;bekle
    NOP            ;bekle
    NOP            ;bekle
    NOP            ;bekle
    NOP            ;bekle
    DECFSZ SAYAC,F ;SAYACTAN 1 eksilt tekrar sayaca ata.0 olmadığı sürece teste tekrar git.
    GOTO TEST
    BSF PORTB,0    ;PORTB nin 0 bitini 1 yap.
    GOTO $            
    END



JOKERAS

#1
Asm'den pek anlamam,asm uzmanı arkadaşlar sorununuzu çözer sanırım.

goto $ sonsuz döngü değilmi?Led yandı pgm akışı bloke oldu kaldı.

goto test olarak değiştirip deneyin.

Ayrıca buton arkı için Nop'lardan bolca ekleyip deneyin.

RaMu

Pic buton okuma diye nette aratın temel hatalar var, bunların neler olduğu anlatımlarda var.
Buton yanlış bağlanmış,
mclr boşta,
buton kontrol yazılımı hatalı, kontrolün ardından en azından bekleme olması lazım.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

ds01

#3
Alıntı yapılan: RaMu - 30 Ekim 2015, 15:59:42
Pic buton okuma diye nette aratın temel hatalar var, bunların neler olduğu anlatımlarda var.
Buton yanlış bağlanmış,
mclr boşta,
buton kontrol yazılımı hatalı, kontrolün ardından en azından bekleme olması lazım.

Ramu hocam sizin dediklerinizi yaptım butonu pull-down dirençle bağladım.mclr yi +5V a çektim.5 6 tane daha NOP ların altına NOP koydum.Yine aynı sorun var.

RaMu

En azından 20 milisaniye bekleme iyi olur,
devamında butonun bırakıldığıda kontrol edilerek işlem yapılmasınında faydası olur.

En az 100 farklı konuda birebir bunlar konuşulmuştur,
temel ve aynı şeyleri tekrar tekrar yazmayalım,
araştırın.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html