Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

16F628 hafıza durumu?

Başlatan erdogan2734, 10 Ocak 2012, 11:30:52

erdogan2734

             Sevgili arkadaşlar uzun bir aradan sonra işim gereği yeniden basic dilinde bir kaç program yazmam lazım. Ancak biliyorsunuz sizinde başınıza gelmiştir programlama dillerini tekrar etmedikçe unutuluyor. Şu anki projemde tek bir buton ile birden fazla komut arasında geçiş yapmam gerek ve geçişlerin kaydedilmesi pic kapanıp açıldığında kaldığı yerden devam etmesi gerekmektedir.
             Bunun için pic16f628 kullanacağım acaba read, write komutu işime yararmı? Bu konu ile ilgili pratik fikirlerinizi bekliyorum.
İyi çalışmalar...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

zakbay

pic basic pro da butonla değişiklik yaptıktan sonra bunu eeproma WRITE komutu ile istediğiniz adrese kaydedebilirsiniz

cihaz açılırken eepromdan bu veriyi READ ile kaydettiğiniz adresten okuyup ondan sonra işlemlerinize devam edebilirsiniz

Tek dostum çalışmak...

erdogan2734

      Hafızada herhangi bir satır belirtmem gerekiyormu peki?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

Kabil ATICI

hafıza adresini belirtmen senin yararına.  İstediğini seç. Ne de olsa oyunun kuralını koyan sensin.
ambar7

erdogan2734

Alıntı yapılan: ambar7 - 10 Ocak 2012, 12:35:07
hafıza adresini belirtmen senin yararına.  İstediğini seç. Ne de olsa oyunun kuralını koyan sensin.
Tamam hemen den,yorum sonucu yazacağım şu oyunu bi kuralım bakalım. İşallh counter-strıke'a benzemez :)
Bildiğim tek şey henüz hiç bir şey bilmediğim...

erdogan2734

'****************************************************************
'*  Name    : DN1.BAS                                      *
'*  Author  : ERDHLC]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 09.01.2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

TRISA=%00010000
TRISB=0
PORTA=0
PORTB=0
I VAR BYTE
'****************************************************************
KONTROL:
READ 0, I[0]
IF I=0 THEN GOTO BASLA
IF I=1 THEN GOTO MOD2
IF I=2 THEN GOTO MOD3
IF I=3 THEN GOTO MOD4
'****************************************************************

BASLA:
MOD1:
PORTB=%00000001
PAUSE 300
PORTB=%00000000
PAUSE 300
PORTB=%00000001
PAUSE 300
PORTB=%00000000
PAUSE 300
IF PORTA.4=0 THEN
GOTO ARTTIR
ENDIF
GOTO MOD1
'****************************************************************

MOD2:
PORTB=%00000010
PAUSE 100
PORTB=%00000000
PAUSE 100
PORTB=%00000010
PAUSE 100
PORTB=%00000000
PAUSE 100
WRITE 0, I[0]
pause 100
IF PORTA.4=0 THEN
GOTO ARTTIR
ENDIF
GOTO MOD2
'****************************************************************
MOD3:
PORTB=%00000100
PAUSE 100
PORTB=%00000000
PAUSE 100
PORTB=%00000100
PAUSE 100
PORTB=%00000000
PAUSE 100
IF PORTA.4=0 THEN
GOTO ARTTIR
ENDIF
GOTO MOD3
'****************************************************************
MOD4:
PORTB=%00001000
PAUSE 100
PORTB=%00000000
PAUSE 100
PORTB=%00001000
PAUSE 100
PORTB=%00000000
PAUSE 100
IF PORTA.4=0 THEN
GOTO ARTTIR
ENDIF
GOTO MOD4
'****************************************************************
ARTTIR:
I=I+1
IF I=4 THEN
I=0
ENDIF
WRITE 0, I[0]
PAUSE 50
GOTO KONTROL   
END


Programı yaptım çalışıyor teksıkıntı buton okumada biraz gecikme oluyor bunu düşürmeye çalışacağım fikriniz varsa memnuniyetle dinlerim...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

tyildizak

Gecikmelerin içine de buton okuma eklersen hızlanır:



j var byte

BASLA:


MOD1:

PORTB=%00000001

for j=1 to 300
   pause 1
   IF PORTA.4=0 THEN
      PORTB=%00000000
      GOTO ARTTIR
   ENDIF
NEXT J 

PORTB=%00000000

for j=1 to 300
   pause 1
   IF PORTA.4=0 THEN  ARTTIR
NEXT J

PORTB=%00000001

for j=1 to 300
   pause 1
   IF PORTA.4=0 THEN
      PORTB=%00000000
      GOTO ARTTIR
   ENDIF
NEXT J


PORTB=%00000000

for j=1 to 300
   pause 1
   IF PORTA.4=0 THEN  ARTTIR
NEXT J

GOTO MOD1

erdogan2734

Sayın tyıldızak hocam j yi yine bayt olarak ayarlıycam demi ve tüm zaman gecikmeleri yerine bu döngüyü koyacağım pause yerine yani?
Doğru anlamışımdır işallah.?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

tyildizak

Aynen öyle, yalnız iki tip döngü var, farketmişsinizdir umarım, buton algıladığında portb 1 ise önce tekrar 0 yapıyor, 0 ise doğrudan çıkıyor. Kolay gelsin.

erdogan2734

Alıntı yapılan: tyildizak - 11 Ocak 2012, 11:36:40
Aynen öyle, yalnız iki tip döngü var, farketmişsinizdir umarım, buton algıladığında portb 1 ise önce tekrar 0 yapıyor, 0 ise doğrudan çıkıyor. Kolay gelsin.
Anladım çok teşekkür ederim...
Bildiğim tek şey henüz hiç bir şey bilmediğim...