Assembly Programlama

giyotin6

Üye
Katılım
18 Eki 2010
Mesajlar
49
Puanları
1
A0 a 5 defa basılınca PortB nin ilk 6 ledi yanacak.

Aşağıdaki şekilde bir şablonum var onu editlemem lazım.Yardımcı olurmusunuz?


PHP:
    LIST p=16F84A

    INCLUDE "P16F84A.INC"
;**********************REGISTER BELİRLEME**************
PORTB    EQU H'06'
STATUS    EQU H'03'
TRISB    EQU H'86'
PORTA   EQU H'05'
SAYAC    EQU H'0C'
TRISA    EQU H'85'

;******************PORT AYARLARI**************

    CLRF    PORTB        ;PORTB SIFIRLANDI
    
    BSF        STATUS,5    ;STATUSUN 5 NOLU BİTİ SET EDİLDİ PAGE 1 DEYİZ    BSF H'03',5
        
    CLRF    TRISB        ;TRISB SIFIRLANARAK PORTB NİN TUM BİTLERİ ÇIKIŞ OLARAK DÜZENLEDNDİ

    MOVLW    H'FF'        
    MOVWF    TRISA        ;portA giriş olarak seçildi.
        
    BCF        STATUS,5    ;STATUSUN 5 NOLU BİTİ SIFIRLANDI PAGE 0 DAYIZ

;****************** PROGRAMRAM BURADA BAŞLADI******************
BASLA    MOVLW    D'05'
        MOVWF    SAYAC

TESTET    BTFSS    PORTA,1    ;PORTB NİN 2 NOLU ÇIKIŞINDAKİ LED IŞILDI  -->Hayır ise alt satıra geçer, EVET ise bir satır atlar.
        GOTO    TESTET        ;HAYIR ise TESTET e git.
        NOP                    ;EVET ise bir saykıl bekle.
        NOP
        NOP
        NOP
        NOP
            
    DECFSZ    SAYAC,1        ;Sayac=sayac-1    Sayac 0 mı? (Sayactaki sayıyı bir azalt)
    GOTO    TESTET        ;HAYIR, PORTA yı kontrol etmek için TESTETe git
    BSF        PORTB,0        ;EVET ise bitir.
    MOVLW    H'FF'    

DONGU

        GOTO DONGU

        END
 
Son düzenleme:
BSF PORTB,0 ;EVET ise bitir.
MOVLW H'FF'

Bunlar yerine;
MOVLW h'3F'
IORWF PORTB, F

NOP ların sonuna da;
BTFSC PORTA,1
GOTO $-h'01'

yazarsan RA1'deki butona 5 kere bas-bırak yapıldığında PORTB nin LSB 6 bitini 1 yapar.. Bi dene istersen..

Bu arada inc dosyası ile üstteki tanımlamalar hata verirse,, hata veren tanımlamaları sil..
 
Merhaba
Sizin verdiğiniz programda sadece PORTB,0 daki led hemen yanıyor ve saymıyor.Ben size 5 sayar ve 6 ledi yakar bir program yazdım."BASLA" nın hemen altında sayılacak rakkamı desimal olarak yazınız siz 5 istediniz 5 yazdım değişik rakkamlar yazarak deneyiniz.Kolay gelsin.Not:yazılımın daha kolay anlaşılması için PORTB'nin pinlerini tek tek yanmasını sağlayacak açık şekilde yazdım
LIST P=16F84
INCLUDE "P16F84.INC"
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
SAYAC EQU H'0E'
BSF STATUS,5
MOVLW H'FF'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BASLA
MOVLW D'5'; İSTENEN RAKKAM GİRİLİR
MOVWF SAYAC
TEST
BTFSC PORTA,0
GOTO TEST
CALL BEKLE
DECFSZ SAYAC,F
GOTO TEST
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
BSF PORTB,4
BSF PORTB,5
DONGUX
GOTO DONGUX
BEKLE
MOVLW H'8F'
MOVWF SAYAC1
DONGU1
MOVLW H'8F'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
 
Merhaba
Sizin verdiğiniz programda sadece PORTB,0 daki led hemen yanıyor ve saymıyor.Ben size 5 sayar ve 6 ledi yakar bir program yazdım."BASLA" nın hemen altında sayılacak rakkamı desimal olarak yazınız siz 5 istediniz 5 yazdım değişik rakkamlar yazarak deneyiniz.Kolay gelsin.Not:yazılımın daha kolay anlaşılması için PORTB'nin pinlerini tek tek yanmasını sağlayacak açık şekilde yazdım
LIST P=16F84
INCLUDE "P16F84.INC"
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
SAYAC EQU H'0E'
BSF STATUS,5
MOVLW H'FF'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BASLA
MOVLW D'5'; İSTENEN RAKKAM GİRİLİR
MOVWF SAYAC
TEST
BTFSS PORTA,0
GOTO TEST
CALL BEKLE
BTFSC PORTA,0
GOTO $-h'01'

DECFSZ SAYAC,F
GOTO TEST
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
BSF PORTB,4
BSF PORTB,5
DONGUX
GOTO DONGUX
BEKLE
MOVLW H'8F'
MOVWF SAYAC1
DONGU1
MOVLW H'8F'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END

Hocam buton bırakmayı da koysanız iyi olurdu.. Pratikte sorun olur.. Bekleme fonksiyonu 61924 saykıl.. 4Mhz de 62ms eder.. Buton ilk seferde 62*5=310ms basılı tutulduğunda ledler yanar..

Sanırım bir de buton ters.. Giriş H olunca butona basılmış oluyor sorulan yazılımda..
 
Merhaba
Evet olabilir.Yalnız hemen hemen tüm öğrenci arkadaşların(PIC programlamaya yeni başlayan) yanıldıkları nokta yazılım ve şema ayrı ayrı düşünülüyor.Normalde proje tasarlanır şeması çizilir ve de bu projenin çalışması için yazılımı yapılır.
"A0 a 5 defa basılınca PortB nin ilk 6 ledi yanacak.
Aşağıdaki şekilde bir şablonum var onu editlemem lazım.Yardımcı olurmusunuz?" sorusuna ben böyle yanıt verdim.Tabiidir ki PORTA,0
şasede veya pozitifte olması projenin çalışması için yazılımı ona göre değiştirmek gerekir.
 

Forum istatistikleri

Konular
127,956
Mesajlar
913,902
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Çevrimiçi üyeler

Geri
Üst