Haberler:

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

Ana Menü

dengesiz artış

Başlatan uardal, 08 Ocak 2008, 14:40:51

uardal

merhaba

aşağıdaki gibi bir kod yazdım isiste ve gerçek uygulamada artışlar dengeisz oluryor, artış tuşuna basınca bi azalıyor bi artıyor, ama hız değeri 500 den yukarı çıkmıyor. anlayamadım bişi, yardımcı olursanız sevinirim.

TRISB = 0
TRISC = 1
TRISD = 1

PORTB = 0
PORTC = 0
PORTD = 0

HIZ VAR byte
HIZ = 500
BASLA:
HIGH PORTB.1
PAUSE HIZ
LOW PORTB.1
PAUSE HIZ
IF PORTD.0=1 THEN
GOTO HIZARTIR
ENDIF
IF PORTD.1 = 1 THEN
GOTO HIZAZALT
ENDIF
GOTO BASLA

HIZARTIR:
HIZ = HIZ + 100
IF HIZ= 5000 THEN
HIZ =5000
ENDIF
GOTO BASLA

HIZAZALT:
HIZ = HIZ - 100
IF HIZ = 100 THEN
HIZ = 100
ENDIF
GOTO BASLA

end

ete

Byte cinsinden değişkenlerin tutabileceği en büyük rakam değeri 255 dir.

Şimdi bak bakalım programına hem;
HIZ VAR BYTE
demişsin Hemde HIZ=500 demişsin.
HIZ=500 denildiği zaman Hız değişkeni Byte cinsinden ise HIZ=244 olur.

Dolayısıyla hız artır kısmındaki artışlarda hiç bir şekilde değerlendirilmez. Değerlendirilmez derken daima toplama yapılır ancak 256 lar çıkartılıp kalan Hız değişkenine yerleştirilir.  Şimdi Hız=244 iken Hız=244+100=344 olunca HIz=344-256 = 88 Hız değişkenine yerleşir. Dikkat edersen hız azalmış oldu. BUna tekrar 100 eklersen hız 188 olur bu sefer arttı. Ancak tekrar eklersen 288 olur ve buda 32 ye eşitlenirki buda senin gördüğün abuk subuk çalışmaya sebep olur.

Yaılacak iş;

HIZ var WORD      
demek olacaktır. Gerisi aynen kalabilir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

uardal

çok sağolasın yaaa, acemilik işte kusura kalmayın, hemen denicem