ödevimi bir türlü yapamıyorum

Başlatan ozkaya35, 15 Kasım 2013, 18:43:54

ozkaya35

hocamız vizede 50 puanlık 0-99 ileri geri butonlu sayıcı devresi verdi fakat yapamıyorum asm den pek anlamam ben hep pbp gördüm bu siteden bulduğum bi programı düzenledim fakat pek düzenleyememişim lütfen yardım edermisiniz elim kolum baglı elinizde varsa lütfen bana ulaştırın buraya upload edin veya email ime atın ne olur ahmetozkaya35@gmail.com lütfen aramadığım yer kalmadı ama yapamadım :(  işte düzenlemeye çalıştığım program bu hataları söylerseniz düzeltirim şimdiden çok teşekkür ediyorum:

;ahmetozaya35@gmail.com
   LIST P=16F84A      
              #include "P16F84A.INC"
              __CONFIG _WDT_OFF &_XT_OSC &_PWRTE_ON &_CP_OFF
;
LSB   EQU   H'0021'
MSB   EQU   H'0022'
SAYI1   EQU   H'0023'
SAYI2   EQU   H'0024'
SAYI3   EQU   H'0025'
SAYI4   EQU   H'0026'
SAYI5   EQU   H'0027'
DEGER   EQU   H'0028'
BIR   EQU   H'0029'
ON   EQU   H'002A'
RAKAM   EQU   H'002D'
RAKAM1   EQU   H'002E'
TEMP   EQU   H'002F'
;-------------
BASLA
   CLRF    MSB
   CLRF    LSB
   BSF    STATUS,5
   MOVLW     B'11110000'
   MOVWF    TRISA
   MOVLW     B'10000000'   
   MOVWF    TRISB
   BCF    STATUS,5
   CLRF   PORTB
   CLRF   PORTA
   CLRF   BIR
   CLRF   ON
   CLRF   SAYI1
   CLRF   SAYI2
   CLRF   SAYI3
   CLRF   SAYI4   
   GOTO   ANA
;-----------
ART
   INCF   BIR,F
   MOVLW   .10
   SUBWF   BIR,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   BIR
   INCF   ON,F
   MOVLW   .10
   SUBWF   ON,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   ON
   GOTO   ASON
ASON
   CALL   EKRAN
   BTFSS   PORTB,7
   GOTO   ASON
   GOTO   ANA
;-----------
AZAL
   MOVLW   .1
   SUBWF   BIR,F
   BTFSC   STATUS,C
   GOTO   ESON
   CLRF   BIR
   MOVLW   .1
   SUBWF   ON,F
   BTFSC   STATUS,C
   GOTO   BIR9
   CLRF   ON
   GOTO   ESON
;----------

ON9
   MOVLW   .9
   MOVWF   ON
BIR9
   MOVLW   .9
   MOVWF   BIR
ESON
   CALL   EKRAN
   BTFSS   PORTA,4
   GOTO   ESON
   GOTO   ANA
;-----------
ANA
   CALL   EKRAN
   BTFSS   PORTA,4
   GOTO   AZAL
   BTFSS   PORTB,7
   GOTO   ART
   GOTO   ANA
;----------
EKRAN
   MOVLW   .5
   MOVWF   RAKAM
   CLRF   PORTB
   MOVLW   .255
   MOVWF   PORTA
GOSTER
   BCF   PORTA,0
   BSF   PORTA,1
   MOVF    BIR,W
        CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   CALL   GECIKME
   CLRF   PORTB
   BSF   PORTA,0
   BCF   PORTA,1
   MOVF    ON,W
        CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   CLRF   PORTB
   BSF   PORTA,0
   BSF   PORTA,1
   DECFSZ   RAKAM,F
   GOTO   GOSTER
   RETURN
GECIKME
   MOVLW   .5
   MOVWF   MSB
D11   
   MOVLW   .55
   MOVWF   LSB
D22
   DECFSZ   LSB,F
   GOTO   D22
   DECFSZ   MSB,F
   GOTO   D11
   RETURN
TABLO
   ADDWF   PCL,F
   RETLW   h'3F'
   RETLW   h'06'
   RETLW   h'5B'
   RETLW   h'4F'
   RETLW   h'66'
   RETLW   h'6D'
   RETLW   h'7D'
   RETLW   h'07'
   RETLW   h'7F'
   RETLW   h'6F'
   RETLW   h'77'
   RETLW   h'7C'
   RETLW   h'39'
   RETLW   h'5E'
   RETLW   h'79'
   RETLW   h'71'
   RETLW   h'80'

;-------------------------------------------------------------------

   END

Kabil ATICI

en azından görebildiğim;
AZAL
   MOVLW   .1
   SUBWF   BIR,F
   BTFSC   STATUS,C
   GOTO   ESON
   CLRF   BIR <<<<neden? ve ne işi var? Bunu mu yapması gerekiyor..
   MOVLW   .1
   SUBWF   ON,F
   BTFSC   STATUS,C
   GOTO   BIR9 ------------>buraya mı gitmesi gerekiyor.?
   CLRF   ON  <<<<<Neden? ve ne işi var? Bunu mu yapması gerekiyor..
   GOTO   ESON




bu arada
CLRF   BIR  ifadesi BIR değişkesinine 0x00 veya .0 değerini yükler..
ambar7

Pir-O

Alıntı yapılan: ambar7 - 16 Kasım 2013, 10:09:09
en azından görebildiğim;
AZAL
   MOVLW   .1
   SUBWF   BIR,F
   BTFSC   STATUS,C
   GOTO   ESON
   CLRF   BIR <<<<neden? ve ne işi var? Bunu mu yapması gerekiyor..
   MOVLW   .1
   SUBWF   ON,F
   BTFSC   STATUS,C
   GOTO   BIR9 ------------>buraya mı gitmesi gerekiyor.?
   CLRF   ON  <<<<<Neden? ve ne işi var? Bunu mu yapması gerekiyor..
   GOTO   ESON




bu arada
CLRF   BIR  ifadesi BIR değişkesinine 0x00 veya .0 değerini yükler..

Burası azalma fonksiyonu.
CLRF   BIR               Birler basamağı değişkeninden 1 çıkarıyor
BTFSC   STATUS,C.   İşlemin sonucunda taşma var mı kontrol ediyor
GOTO   ESON           Taşma yoksa geri dönüyor
CLRF   BIR               Taşma varsa birler basamağı değişkenini sıfırlıyor
MOVLW   .1
   SUBWF   ON,F.      Onlar basamağından 1 çıkarıyor
BTFSC   STATUS,C    Onlar basamağından 1 çıkarma sonucunu kontrol ediyor.
GOTO   BIR9            Taşma yoksa geri dönüyor.
CLRF   ON                Taşma varsa onlar basamağı değişkenini sıfırlıyor
GOTO   ESON.          Ve geri dönüyor

Ben programı takip ettim bir hata yok gibi görünüyor.
Devreyi kurdun mu yoksa proteusta mı deniyorsun ?
Program hiç mi çalışmadı yoksa derlenmedi mi?
Derlendi ise segmentlerde hiç mi yanma sönme yok?
Tavsiyem proteusta simülasyonu kurman ve debug işlemini yapıp programı adım adım takip etmen böylelikle hatayı bulmak kolaylaşır. Ne kadar göz takibi yapsak da gerçekte nerde hata oluşuyor göremeyiz.
İyi çalışmalar.

Kabil ATICI

#3
azalma fonksiyonunda taşma olursa değeri sıfır değil 9 olması gerekir!
ambar7

Pir-O

GOTO   BIR9         Burada zaten 9 yapıyor birler basamağını. Eğer onlar basamağında da taşma varsa birler basamağı da onlar basamağı da sıfır olarak kalıyor. Yani 00 olunca 99 a dönmek yerine 00 olarak kalıyor.

Kabil ATICI

#5
artan bölümde ne yapıyor?
..98->99->00->01...

Azan bölümde buna göre

..02->01->00->99->98...
şeklinde olması gerekir.

yoksa;
artan bölüm
00...99
azan bölüm
99...00
şeklinde
her ikisinin aynı şekilde saydırılması gerekir. Bunu soruyu soran kişinin belirtmiş olması gerekir.

Not: Yukarıdaki yorumlar artan ve azan fonksiyonun karşılaştırılması üzerine oluşturulmuştur.
ambar7

ozkaya35

yaa 0-99 saycak sürekli ileri geri devam etcek 99-0-1-2-3-.. die veya 3-2-1-0-99-98-... diye hocam yapamadım yaa 3 günüm kaldı :(

Kabil ATICI

azalan için

AZAL
   BTFSS   PORTA,4           ;butonu bırakmak için bekle
   GOTO   AZAL
   MOVLW   .1             
;gerekirse 0x01
   SUBWF   BIR,F
   BTFSC   STATUS,C
   GOTO   ESON
  MOVLW   .9           ;gerekirse 0x09
   MOVWF   BIR
   MOVLW   .1         
;gerekirse 0x01
   SUBWF   ON,F
   BTFSC   STATUS,C
   GOTO   ESON
   MOVLW   .9     
;gerekirse 0x09
   MOVWF   ON
;----------
ESON
   CALL   EKRAN
   GOTO   ANA


artan için;
ART
   BTFSS   PORTB,7    ; butonun bırakılmasını bekle
   GOTO   ART
   INCF   BIR,F
   MOVLW   .10
   SUBWF   BIR,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   BIR
   INCF   ON,F
   MOVLW   .10
   SUBWF   ON,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   ON
   GOTO   ASON
ASON
   CALL   EKRAN
   GOTO   ANA



ekran bölümündeki
   DECFSZ   RAKAM,F
   GOTO   GOSTER

bölümünü kullanmana gerek yok. Çünkü zaten program ANA bölümde iken her seferinde tarayacaktır.
ambar7