Bei dem folgenden Code übergebe ich 2 Worte (1001 und 2002) an Sub.
Wenn Sub beendet ist, schaue ich mir die ersten 4 Bytes des Datenfeldes mit Hyperteminal:
ADR1= 233
ADR2= 3
ADR3= 100
ADR4= 0
Der erste Wert stimmt: 256 * 3 + 233 = 1001
Der zweite Wert stimmt aber nicht: 256 * 0 + 100 = 100
Für den zweitenwert hätten es sein müssen:
ADR3= 210
ADR4= 7
So dass, 256 *7 + 210 = 2002
Wo ist denn mein Fehler?
GrussCode:$regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Declare Sub Datensatzsichern_i2c(byval Datenwort_1 As Word , Byval Datenwort_2 As Word , Adrese_byte_write As Word) Dim Dw1 As Word Dim Dw2 As Word Dim Naechste_puffer_adresse As Word Dim Write_puffer(64) As Byte Dim Temp_d As Byte Naechste_puffer_adresse = 0 For Temp_d = 1 To 1 Dw1 = 1001 Dw2 = 2002 Call Datensatzsichern_i2c(dw1 , Dw2 , Naechste_puffer_adresse ) Next Print "DW1= " ; Dw1 Print "DW2= " ; Dw2 Print "ADR1= " ; Write_puffer(1) Print "ADR2= " ; Write_puffer(2) Print "ADR3= " ; Write_puffer(3) Print "ADR4= " ; Write_puffer(4) Print "ADRN= " ; Naechste_puffer_adresse Print " " Do Loop Sub Datensatzsichern_i2c(byval Datenwort_1 As Word , Byval Datenwort_2 As Word , Adrese_byte_write As Word) 'Es wird ein Datenwort byte-richtig in ein Write_Puffer hineingeschrieben: 'Niederwertiges Byte des Datenwortes in niederwertige Write-Puffer-Adresse 'Write_Puffer fasst 64 Byte auf. Das erste Element des Write_Puffers wird mit 1 indexiert. Incr Adrese_byte_write Write_puffer(adrese_byte_write) = Low(datenwort_1) Incr Adrese_byte_write Write_puffer(adrese_byte_write) = High(datenwort_1) Incr Adrese_byte_write Write_puffer(adrese_byte_write) = Low(datenwort_2) Incr Adrese_byte_write Write_puffer(adrese_byte_write) = High(datenwort_2) End Sub
Ali






Zitieren


Lesezeichen