0-9999 sayıcı yardım

Başlatan dogon, 01 Eylül 2008, 22:14:34

dogon


arkadaşlar bu 0-9999 sayıcı devresinin elektrik gidip gelse dahi kaldığı sayıyı hafızasında tutmasını en kolay yoldan nasıl sağlarım? lütfen acil yardım ederseniz sevinirim.

gokhangokcen

picin epromuna sayiyi yazarak saglayabilirsin arkadasim hangi programala dilini kullaniyorsun bilmiyorum ama protonda:
ewrite komutu ve eread komutu var her sayiyi degistiginde eproma kaydetmelisin ve her pic açildiginda eread komutunu kullanip sayiyi ekrana gostermelisin
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

dogon

Alıntı yapılan: "gokhangokcen"picin epromuna sayiyi yazarak saglayabilirsin arkadasim hangi programala dilini kullaniyorsun bilmiyorum ama protonda:
ewrite komutu ve eread komutu var her sayiyi degistiginde eproma kaydetmelisin ve her pic açildiginda eread komutunu kullanip sayiyi ekrana gostermelisin

arkadaşım picte çok çok yeniyim fazla kod bilgim yok ama  kodlar bu şekilde  ve asm olarak neyi nereye eklemeliyim nasıl bir değişiklik yapmalıyım biraz yardımcı olabilirmisin acaba;
   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'
YUZ   EQU   H'002B'
BIN   EQU   H'002C'
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   YUZ
   CLRF   BIN
   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
   INCF   YUZ,F
   MOVLW   .10
   SUBWF   YUZ,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   YUZ
   INCF   BIN,F
   MOVLW   .10
   SUBWF   BIN,W
   BTFSS   STATUS,Z
   GOTO   ASON
   CLRF   BIN
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
   MOVLW   .1
   SUBWF   YUZ,F
   BTFSC   STATUS,C
   GOTO   ON9
   CLRF   YUZ
   MOVLW   .1
   SUBWF   BIN,F
   BTFSC   STATUS,C
   GOTO   YUZ9
   CLRF   BIN
   GOTO   ESON
;----------
YUZ9
   MOVLW   .9
   MOVWF   YUZ
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
   BSF   PORTA,2
   BSF   PORTA,3
   MOVF    BIR,W
       CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   CALL   GECIKME
   CLRF   PORTB
   BSF   PORTA,0
   BCF   PORTA,1
   BSF   PORTA,2
   BSF   PORTA,3
   MOVF    ON,W
       CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   CLRF   PORTB
   BSF   PORTA,0
   BSF   PORTA,1
   BCF   PORTA,2
   BSF   PORTA,3
   MOVF    YUZ,W
       CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   CLRF   PORTB
   BSF   PORTA,0
   BSF   PORTA,1
   BSF   PORTA,2
   BCF   PORTA,3
   MOVF    BIN,W
       CALL   TABLO
   MOVWF   PORTB
   CALL   GECIKME
   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

gokhangokcen

üzgünüm ama asm konusunda bilgim yok  :(
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

Tagli

ASM kodu yazarken dikkat etmen gereken en önemli nokta kodun içinde açıklamalar yapmayı ihmal etmemek. Hatta ben olayı biraz abartarak her satırın yanına bir açıklama yazarım, böylece kodu sadece açıklamaları okuyarak da takip edebilirim.

Bahsettiğim açıklamalar mevcut olmadığı için senin kodu pek anlamadım ama ilk bakışta çok karışık gözüküyor. Ama sanırım her basamağı bir byte'ta saklamışsın. Bence bir byte'a iki basamak sığdırabilirdin, bu durumda BDC formatı denen bir şekilde çalışmış olurdun, yani her basamak için 4 bit. Elbette bu 4 bit hiçbir zaman 9'dan büyük olmayacağı için bunu kontrol etmen gerekirdi ve bu da aslında karmaşık bir işlem sayılır. Fakat eğer 18 serisi bir işlemci kullanırsan onlarda DAW diye bir komut var, bu işi senin yerine yapar. Yapman gereken tek şey BDC formatında iki sayıyı işleme soktuktan sonra (çıkarma işlemi de oluyor mu ondan emin değilim) çıkan sayı W'de olmak şartı ile bu komutu çalıştırman. Yaptığı şey bu:
Alıntı yapılan: "18FXX2 Datasheet"DAW Decimal Adjust W Register

Operation:
If [W<3:0> >9] or [DC = 1] then
(W<3:0>) + 6 → W<3:0>;
else
(W<3:0>) → W<3:0>;

If [W<7:4> >9] or [C = 1] then
(W<7:4>) + 6 → W<7:4>;
else
(W<7:4>) → W<7:4>;

Status Affected: C

Description: DAW adjusts the eight-bit value in
W, resulting from the earlier addition
of two variables (each in
packed BCD format) and produces
a correct packed BCD result.

Burda anlattıklarını belki 16 serisine de uygulayabilirsin. Bu arada, verdiğin bu kodda sorunlu olan yer neresi? Eğer kod doğru çalışıyorsa zaten bu söylediklerimle uğraşmana gerek yok. Yoksa sadece EEPROM'a yazım konusunda mı bilgi istiyorsun?
Gökçe Tağlıoğlu

dogon

evet sadece hangi sayıda kaldığını hatırlamasını istiyorum sayacın. kodlar konusunda hiç bilgim yok denecek kadar az.  bu hafızada kalma olayını nasıl yapabilirim nereye ne eklersem bu iş olur?

stlg

Bence burada yazılım kadar donanımda onemli, elektrigin kesildigini anlamak ve cok kusa bir surede ,kapasiteler daha bosalmadan bilgileri eeproma atma işlemi
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

dogon

anladım ama nasıl yapabilirim bunu o önemli?

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

yalnayak

bence once 877 de eeproma yazmayi bu siteden eeproma yazma diye arattirip bulup ogrendikten sonra her defasinda her rakami eeproma yazarak baslamalisin..
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?