24c32 dword okuma sorunu

Başlatan korcenk, 25 Mart 2013, 20:04:01

korcenk

arkadaşlar 24c32 eproma normal dword tanımladığımda dword olarak okuyorum ama array  dword tanımladığımda değişkeni okurken 4 byte okuması gerekirken son  1 byte tı okuyor.
Yardım edermisiniz. iki gündür araştırıyorum hatayı bulamadım
Device=18F452
Declare Xtal 20
Declare Optimiser_Level = 3
Dim deger[10] As Dword
Dim deger_yaz As Dword
Dim adr_yaz As Word
Dim adr_oku As Word
Dim x As Byte

TRISA=0
TRISB=255
TRISC=0
TRISD=0
TRISE=0
ADCON1=7
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

Declare Hbus_Bitrate 100

basla:

If PORTB.2=0 Then 
While PORTB.2=0
Wend
DelayMS 200
If adr_yaz > 200 Then adr_yaz = 0
deger_yaz = deger_yaz + 1000
GoSub yaz
EndIf

If PORTB.1=0 Then
While PORTB.1=0
Wend
DelayMS 200
If adr_oku > 200 Then adr_oku = 0
If x > 10 Then x = 0
GoSub oku
EndIf

GoTo basla

yaz:
HBStart
HBusOut $A0,adr_yaz,[deger_yaz]
HBStop
DelayMS 10
adr_yaz = adr_yaz + 4
Return


oku:
HBStart
HBusIn $A0,adr_oku,[deger[x]]
HBStop
adr_oku = adr_oku + 4
Inc x
Return



korcenk

arkadaşlar sorunu çözdüm.24c32 ye dword olarak tanımladığım değer isimli değişkeni yazabiliyorum ama okuyamıyordum bende dword olarak yazdım okurken değer_msb ve değer_lsb adında iki adet Word değişkenle okuyup. sonucu dword olan değer isimli değişkenine yazdım. ve sorun çözüldü.
herkese iyi çalışmalar

Device=18F452
Declare Xtal 20
Declare Optimiser_Level = 3
[color=red]Dim deger[10] As Dword
Dim deger_msb As Word
Dim deger_lsb As Word[/color]Dim deger_yaz As Dword
Dim adr_yaz As Word
Dim adr_oku As Word
Dim x As Byte

TRISA=0
TRISB=255
TRISC=0
TRISD=0
TRISE=0
ADCON1=7
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

Declare Hbus_Bitrate 100
Declare Slow_Bus off
basla:

If PORTB.2=0 Then 
DelayMS 100
If adr_yaz > 200 Then adr_yaz = 0
deger_yaz = deger_yaz + 1000
GoSub yaz

EndIf

If PORTB.1=0 Then
DelayMS 150
If adr_oku > 200 Then adr_oku = 0
If x > 10 Then x = 0
GoSub oku
EndIf

GoTo basla

yaz:
HBStart
HBusOut $A0,adr_yaz,[deger_yaz]
HBStop
DelayMS 10
adr_yaz = adr_yaz + 4
Return


oku:
HBStart
HBusIn $A0,adr_oku,[deger_msb,deger_lsb]
HBStop
deger[x] = (deger_msb << 16) + deger_lsb[/color]adr_oku = adr_oku + 4
Inc x
Return