Zitat von
Anonymous
hi
danke, habe ds gerade auch mal umgeschrieben jedoch klappt es noch nicht habe ich was vergessen?
Ja, einiges. Woher soll denn der Chip wissen, daß er gemeint ist.
Bei meiner Sub wird die Adresse ja als Parameter übergeben, wenn Du es anders machst, musst Du Device schon mit einem Wert versehen.
Außerdem muss Value ein Word sein (zumindest wenn Temperaturen über 25,5°C gemessen werden sollen).
Und wie liest Du den Wert aus? Ich entdecke weder eine Print value noch eine Lcd value Anweisung. Ich hatte doch extra eine Sub vorgeschlagen, die Du dann natürlich declarieren musst, um das flexibel in eigenen Programmen verwenden zu können.
Aber bitte... untenstehend der korrigierte Code für Deinen Ansatz:
Code:
'------------------------------------die anweisungen für prozessor,use.-------------------------------------------------
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
Config Scl = Portc.5
Config Sda = Portc.4
Dim Device As Byte
Dim Deviceread As Byte
Dim Lowtemp As Byte
Dim Hightemp As Byte
Dim Value As Word '!!!!!!!
I2cinit
Device = 144 'Wenn alle Adressleitungen des 1621 auf GND sind.
Deviceread = 145
'----------------------------------------------Hauptprogramm------------------------------------------------------------
Do
I2cstart
I2cwbyte Device
I2cwbyte &HEE 'Temperaturmessung anstoßen
I2cstop
I2cstart
I2cwbyte Device
I2cwbyte &HAA 'Temperaturmessung Lesekommando
I2cstop
I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack 'LSB holen
I2crbyte Hightemp , Nack 'MSB holen
I2cstop
Value = Lowtemp * 10
If Hightemp = 128 Then
Value = Value + 5
End If
Print value
' oder LCD value
waitms 500 'kurze Pause
Loop
End
Viele Grüße
Henrik
Lesezeichen