Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: ulaser84 - 13 Eylül 2006, 17:42:54

Başlık: Değişkenlerin farklı değer alması
Gönderen: ulaser84 - 13 Eylül 2006, 17:42:54
merhaba.dün başladığım projede takıldığım bir nokta oldu.değişken olarak
1 adet byte,2 adet word kullandım.bunları hızlı ve yavaş olmak üzere arttırıp azaltıyorum ve sonucu desimal olarak lcd den izliyorum.değişken içeriği 0  iken 1 azaltmaya yaptım.değer olarak word değişkenini 65535 olarak lcd de gördüm.değeri 1 arttırdığımda tekrar 0  değerini göremedim.farklı formatta değerler gördüm.sorunu nasıl aşabilirim.diğer bir sorum word değişkenini eeprom a yazmak.kullanılan 16f870. iyi çalışmalar.teşekkürler


MENU_2:
PRINT   $FE,1,"<<-1<-1  +1>+1>>"
   PRINT   $FE,$C0,"VALUE=",#VALUE1
LABELH:
   BUTTON  ARTTIR,0,255,255,BUF1,0,LABELF
   VALUE1=VALUE1+1
   PRINT   $FE,$C0,"VALUE=",#VALUE1
   DELAYMS 100
LABELF:
   BUTTON  AZALT,0,255,255,BUF2,0,LABELG
   VALUE1=VALUE1-1
   PRINT   $FE,$C0,"VALUE=",#VALUE1
   DELAYMS 100
LABELG:
   IF  PORTA.0=0 THEN
   VALUE1=VALUE1-1
   PRINT   $FE,$C0,"VALUE=",#VALUE1
   ELSE
   ENDIF
   DELAYMS 10
LABELM:
   IF  PORTA.3=0 THEN
   VALUE1=VALUE1+1
   PRINT   $FE,$C0,"VALUE=",#VALUE1
   ELSE
   ENDIF
   DELAYMS 10
LABELL:
   BUTTON  PORTB.0,0,255,255,BUF5,0,LABELH
   PRINT   $FE,1,"KAYDEDIYOR"
   DELAYMS 500
   GOTO    MENU
   RETURN
Başlık: Değişkenlerin farklı değer alması
Gönderen: ibrsel - 13 Eylül 2006, 23:28:12
http://www.hemenpaylas.com/download/1560138/dene.rar.html

Linkteki programı bir incele..Senin dedeğin gibi bir sorun ile karşılaşmadım programı yazarken..Word tipi bir değişkenin değeri 0 iken bir azalttığında 65535 oluyor..Tekrar bir arttırdığında 0 oluyor..

Gelelim ikinci soruna..Mikro denetleyicinin eprom bellek hücresi 1 Byte lik bilgi depolar..Word tipi değişkenin ise 2 Byte olduğu için tek bellek hüzresinde bu değeri saklayamazsın..Bunu için yazılımında bazı oyunlar yaparak (örneğin;2 bytelik bir sayının ilk byte nı belleğin bir hücresine,ikinci byte nı başka bir hücresine yazdırabilirsin,yada bunun gibi başka çözümler..Kolay gelsin
Başlık: Değişkenlerin farklı değer alması
Gönderen: ulaser84 - 14 Eylül 2006, 13:59:44
hocam senin programı inceledim.çok sağolasın.while wend ile kontrol etmişsin butonları.program arasına iki parça while ile buton kontrol ekledim.sonuç yine aynı 65535 den 0 a geçişte (05535)sayısı çıkıyor lcd de.3 farklı buton kontrolunde aynı problem oluyor (button,if else,while wend).
Başlık: Değişkenlerin farklı değer alması
Gönderen: ulaser84 - 14 Eylül 2006, 20:02:39
sorun bulunmuştur.sayılar 5 basamaktan 0 a geçişte kalan artık sayılar ekrandan gitmemektedir.buton taramasıyla birlikte ekranı temizlettiğimde eklediğim 100 ms bekleme süresi butonların algılanmamasına yol açtı aynı zamanda ekran çok dalgalandı(bekleme olmasa ekran gözükmeyecek).bende her sayı değiştirdiğimde alt programdan komut çağırarak ekranı temizliyorum.hafif bir dalgalanma oluyor.rahatsız edici değil.koduda değiştirdim ilk program 1800 word tutarken 400 word bir azaltma oldu.

MENU_2:
   PRINT AT 1,1,"<< >>HIGH-LOW< >"
   PRINT AT 2,1,"SLOW RATE=",DEC VALUE1
   IF  ARTTIR=0    THEN
       DELAYMS 250:VALUE1=VALUE1+1:GOSUB TEMIZLE:ELSE
           IF  AZALT=0 THEN
                DELAYMS 250:VALUE1=VALUE1-1:GOSUB TEMIZLE:ELSE
                    IF HIZLI_ARTTIR=0 THEN
                       DELAYMS 20:VALUE1=VALUE1+1:GOSUB TEMIZLE:ELSE  
                           IF HIZLI_AZALT=0 THEN
                               DELAYMS 20:VALUE1=VALUE1-1:GOSUB   TEMIZLE:ELSE
                                       IF  MENU_SECIM=0 THEN
                                           DELAYMS 500
                                           GOTO    MENU    :ELSE
                                       ENDIF
                                    ENDIF
                               ENDIF
                           ENDIF
                       ENDIF
                 GOTO MENU_2
TEMIZLE:
   PRINT $FE,1
RETURN