Hafıza ile ilgili bir iki küçük soru?

Başlatan erdogan2734, 06 Kasım 2012, 22:59:27

erdogan2734

        Arkadaşlar Merhaba Benim ufak bir sorunum var yardımcı olursanız çok sevinirim.
Yeni bir projede bir alıcı ve bir verici kullanıyorum. Verici picin devresi  üzerinde 0-dan 9'a kadar tuşlar var ve  müşterinin istediği herhangi bir şifre örneğin 1952 bu şifreyi Rf modül vasıtasıyla yolluyor. Alıcımda bu bilgiyi alıp kaydediyor ve enerjisi kesilde dahi bu veriyi eproom'a kaydediyor ve yeniden enerjilendiğinde önce kaydettiği bu veriyi okuyor ve gelen kod eğer bu şifre ise çıkış vermek için başka döngüye gidiyor.
   Programım çok uzun olduğu için bu şifre verme ve alma kısmını aşağıda yazıyorum.
   Benim sıkıntım, tekrar hafızadan şifre okutmak ve bu şifreye göre hareket ettirmek.
   Yapmak istediğim şey çok basit aslında. Alıcı programda bir değişken tanımlamak ve bu değişkene vericiden yazdığım word bilgisini kaydetmek daha sonrada bu word bilgisini bir kaç yerde karşılaştırma yapmak.
   

Vericimde 16f877a kullanıyorum. Şifreyi iki döngüden yolluyorum birincisi bu.
SGONDER:    'sıfre gonderılıyor ancak gonderdıgını belırtmek ıcın kontrol ledımızı yanıp sonuyor
WRITE 0,SIFRE.LOWBYTE
WRITE 1,SIFRE.HIGHBYTE
VER=SIFRE:LP=1
PAUSE 200
LP=0
pause 200
LP=1
PAUSE 200
LP=0
pause 200
LP=1
PAUSE 200
LP=0
GOSUB GONDER
GOTO BASLA


ikinci bölüm
BASLA:
READ 0,SIFRE.LOWBYTE
READ 1,SIFRE.HIGHBYTE

IF AK=0 THEN
VER=SIFRE          
GOSUB GONDER
LP=1 
WHILE AK=0:WEND
LP=0
GOTO BASLA2              
ELSE 
GOSUB DELAY_ON
ENDIF
goto basla



alıcı kısım pici 16f628a ve alıcı programı şöyle
START2:
AL=SIFRE


IF SIFRE=1453 or SIFRE<>12 THEN GOTO SIFREYAZ
IF SIFRE=0000 THEN GOTO START2

IF SIFRE=12 THEN 
GOTO START1
else
gosub delay_ON
ENDIF
  
GOTO START2

SIFREYAZ:
LP=0:GOSUB DELAY_ELLI:LP=1
LP=0
WRITE 0,SIFRE.LOWBYTE
WRITE 1,SIFRE.HIGHBYTE
gosub delay_yuz:lp=1
gosub delay_yuz:lp=0
AL=0
SIFREYAZ2:
READ 0,SIFRE.LOWBYTE
READ 1,SIFRE.HIGHBYTE
if al=SIFRE THEN 
goto BAS
else
gosub delay_ON
endif
goto SIFREYAZ2


Buralarda bir yerlerde hata yapmaktayım. Ya gece gece benim gözüm görmüyor yada yanlış bir işlem yapıyorum.
Yardımcı olursanız çok sevinirim. İyi çalışmalar.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

vale9

START2:
AL=SIFRE yazmışsın.

SIFRE=AL yazman gerekmiyor mu?
Hayat 1'ler ve 0'lardan ibarettir.

erdogan2734

Alıntı yapılan: vale9 - 16 Kasım 2012, 22:03:37
START2:
AL=SIFRE yazmışsın.

SIFRE=AL yazman gerekmiyor mu?

Programı Proteusta Lcd ile desteklediğimde bu haliyle (AL=SIFRE) sorun olmadı. Eşitlemek istediğimiz değişken birinci sırada eşitlenmek istenen değişken ikinci sırada olması gerekir diye düşünüyorum.? Yanlışım olabilir....
Bildiğim tek şey henüz hiç bir şey bilmediğim...

vale9

Alıcı kodlarına baktığımda rf modülden aldığın bilgiyi AL değişkenine kaydedip bunu da SIFRE değişkeninin içine atman gerekmiyor mu? Sonra SIFRE'yi 1453 veya 12 gibi değerle karşılaştırıyorsun. Eğer böyleyse SIFRE=AL demen gerekir (AL değişkenini SIFRE içine ata)
Hayat 1'ler ve 0'lardan ibarettir.

erdogan2734

Alıntı yapılan: vale9 - 17 Kasım 2012, 10:52:25
Alıcı kodlarına baktığımda rf modülden aldığın bilgiyi AL değişkenine kaydedip bunu da SIFRE değişkeninin içine atman gerekmiyor mu? Sonra SIFRE'yi 1453 veya 12 gibi değerle karşılaştırıyorsun. Eğer böyleyse SIFRE=AL demen gerekir (AL değişkenini SIFRE içine ata)
Evet benim söylediğim mantığa göre orada bir hata var. Bir düzeltme yapalım bakalım nasıl olacak. Bu arada yorumun için teşekkürler buralara son zamanlarda  pek ugrayan yok...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

vale9

Alıntı yapılan: erdogan2734 - 17 Kasım 2012, 11:45:45
  Evet benim söylediğim mantığa göre orada bir hata var. Bir düzeltme yapalım bakalım nasıl olacak. Bu arada yorumun için teşekkürler buralara son zamanlarda  pek ugrayan yok...

rica ederim, umarım sorunun çözülür.
Hayat 1'ler ve 0'lardan ibarettir.