Argument out of range . Last significant bit used uyarısı

Başlatan gogoce, 25 Aralık 2015, 12:58:17

gogoce

Merhabalar hayırlı cumalar


2x16 lcd ekranın üst satırında 65 karakterlik yazı kaydırıyorum
2. satırda ise 2 adet ds18b20 den gelen sıcaklık bilgisi gösteriyorum

compiler yapınca

Argument out of range . Last significant bit used

uyarısı alıyorum
program çalışıyor ama bu uyarı nedir


saygılar
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Burak

#1
Bu uyarı MPASM'da byte tipi değişkene word büyüklüğünde bir ifade atanması gibi olaylar sonucunda meydana geliyor . LST dosyasına bakılırsa ASM (MOVF) direktifinin bulunduğu bir satırda bozunuma uğradığı anlamı taşır ... En iyisi değişkenleri kontrol et ...

Burak
Ω Gens Una Sumus Ω

gogoce

lookup tablosu oluşturdum sayaç 90 dan fazla sayımıyor .byte olarak tanımlı . Değişken olarak da askıı karakterler var yazı kaydırıyorum . oda byte oılarak tanımlı
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Bazen bu problem 256-byteDeğişkeni gibi işlem sonuçlarından da çıkabilmektedir.
Bu eşitliği bir byte değişkenine eşitlemiş iseniz ve byte değişkeni dediğimiz değişken değeri sıfır ise otomatikman yeni değer 256 olarak verilmeye çalışılırki buda sözkonusu hatayı oluşturur.
Ete

gogoce

Tesekkurler hocam programı buraya ekleyeyim eve gidince şu anda cepten yazıyorum
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

hocam program bu


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 23.12.2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ __config _CP_ALL & _DEBUG_OFF & _CPD_ON & _LVP_OFF & _BODEN_OFF & _WDT_ON & _XT_OSC



DEFINE OSC 4
cmcon=7
TRISA=255
TRISB=0
trisc=255
DEFINE LCD_DREG PORTB 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTB 'LCD register select port
DEFINE LCD_RSBIT 2 'LCD register select bit
DEFINE LCD_EREG PORTB 'LCD enable port
DEFINE LCD_EBIT 3 'LCD enable bit
DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us

SAG VAR PORTB.0
SOL VAR PORTB.1

SOL_Busy        VAR BIT
SOL_HAM         VAR BYTE
SOL_ISI         VAR WORD
SOL_SIGN        VAR BYTE
SOL_SIGN_BITI   VAR SOL_HAM.Bit11
SOL_NEGAT_ISI   CON 1
SOL_TEMP        VAR BYTE
SOL_Float       VAR WORD
;____________
SAG_Busy        VAR BIT
SAG_HAM         VAR WORD
SAG_ISI         VAR WORD
SAG_SIGN        VAR BYTE
SAG_SIGN_BITI   VAR SAG_HAM.Bit11
SAG_NEGAT_ISI   CON 1
SAG_TEMP        VAR BYTE
SAG_Float       VAR WORD
KAR VAR BYTE                   
IC_ISARET VAR BYTE
DIS_ISARET VAR BYTE
K0 VAr byte
K1 VAR BYTE
K2 VAR BYTE
K3 VAR BYTE
K4 VAR BYTE
K5 VAR BYTE
K6 VAR BYTE
K7 VAR BYTE
K8 VAR BYTE
K9 VAR BYTE
K10 VAR BYTE
K11 VAR BYTE
K12 VAR BYTE
K13 VAR BYTE
K14 VAR BYTE
K15 VAR BYTE
K16 VAR BYTE
B0 VAR BYTE

Clear                                             

PAUSE 500                                       

DEVAM:

LCDOUT $FE,1                                             
LCDOUT $FE,$80,k0,K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15                   
LCDOUT $FE,$C0,IC_ISARET,dec SAG_ISI,",",DEC SAG_FLOAT,"<I  D>",DIS_ISARET,DEC SOL_ISI,",",DEC SOL_FLOAT,KAR
IF SOL_SIGN="-" THEN KAR="*"
IF SOL_ISI<4 THEN
KAR="*"
ELSE
KAR=" "
ENDIF
IF SOL_SIGN="+" THEN DIS_ISARET=" "
IF SOL_SIGN="-" THEN DIS_ISARET="-"
IF SAG_SIGN="+" THEN IC_ISARET=" "
IF SAG_SIGN="-" THEN IC_ISARET="-"
IF DIS_ISARET="-" THEN KAR="*"
GOSUB OKU
GOSUB EKRAN
GOTO DEVAM


OKU:
OWOUT   SAG, 1, [$CC, $44]' ISI değerini oku
SAG_BEKLE:
OWIN    SAG, 4, [SAG_Busy]    ' Busy değerini oku
IF      SAG_Busy = 0 THEN SAG_BEKLE  ' hala meşgulmü? , evet ise goto Bekle..!
OWOUT   SAG, 1, [$CC, $BE]' scratchpad memory oku
OWIN    SAG, 2, [SAG_HAM.Lowbyte, SAG_HAM.Highbyte]' İki byte oku ve okumayı bitir.
GOSUB   SAG_HESAP
RETURN
SAG_HESAP:                 ' Ham değerden Santigrat derece hesabı
SAG_Sign  = "+"
IF SAG_SIGN_BITI = SAG_NEGAT_ISI THEN
SAG_Sign   = "-" 
SAG_temp=($ffff-SAG_ham+1)*625
SAG_ISI  = DIV32 10
GOTO SAG_GEC 
endif
SAG_TEMP = 625 * (SAG_HAM+1)        '
SAG_ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
SAG_GEC:
SAG_FLOAT = (SAG_ISI //1000)/100
SAG_ISI=(SAG_ISI/1000)
if SAG_ISI=65535 then
lcdout $FE,$D0,"---"
endif
;_______________________________________________________________________________
OWOUT   SOL, 1, [$CA, $14]' ISI değerini oku
SOL_BEKLE:
OWIN    SOL, 4, [SOL_Busy]    ' Busy değerini oku
IF      SOL_Busy = 0 THEN SOL_BEKLE  ' hala meşgulmü? , evet ise goto Bekle..!
OWOUT   SOL, 1, [$CC, $BE]' scratchpad memory oku
OWIN    SOL, 2, [SOL_HAM.Lowbyte, SOL_HAM.Highbyte]' İki byte oku ve okumayı bitir.
GOSUB   SOL_HESAP
RETURN
SOL_HESAP:                 ' Ham değerden Santigrat derece hesabı
SOL_Sign  = "+"
IF SOL_SIGN_BITI = SOL_NEGAT_ISI THEN
SOL_Sign   = "-" 
SOL_temp=($ffff-SOL_ham+1)*625
SOL_ISI  = DIV32 10
GOTO SOL2   
endif
SOL_TEMP = 625 * (SOL_HAM+1)        '
SOL_ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
SOL2:
SOL_FLOAT = (SOL_ISI //1000)/100
SOL_ISI=(SOL_ISI/1000)
If SOL_ISI=65535 then
Lcdout $FE,$CD,"---"   
endif
RETURN


EKRAN:
LOOKUP B0,["65 KARAKTERLİK MESAJ BURDA YAZILIYOR TOPLAM UZUNLUK 66 KARAKTER "],K16 
K0=K1
K1=K2
K2=K3
K3=K4
K4=K5
K5=K6
K6=K7
K7=K8
K8=K9
K9=K10
K10=K11
K11=K12
K12=K13
K13=K14
K14=K15
K15=K16
B0=B0+1
IF B0=80 THEN
B0=0
ENDIF
   
RETURN


END
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Açıkça belliki SAG_TEMP VE SOL_TEMP değişkenlerine eşitlenmiş formüller bu hatayı oluşturuyor.
Değişkenleri word tipine çevir düzelmesi gerekir.
Ete

gogoce

cevap için teşekkürler hocam ama yine sonuç aynı
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete


gogoce

gözden kaçırdığım bişeyler vardır illaki ama takıldım kaldım
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

F®T

Ömer hangi işlemciyi kullanıyorsun.

HATAN:

LOOKUP B0,["65 KARAKTERL İ K MESAJ BURDA YAZILIYOR TOPLAM UZUNLUK 66 KARAKTER "],K16

İ yi büyük yazman ...
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

gogoce

16f876 20 mhz

İ yi denerim abi hiç aklıma gelmedi
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

haklıymışsın ferit abi türkçe karakterler yüzünden oluyormuş

problem düzeldi
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal