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
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
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).
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