PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Subroutinen und Include



Marten83
25.07.2007, 13:55
Hallo!

Ich bin momentan dabei meine Wetterstation zu bauen.
Dabei verwende ich auch einen ADC der mir den Drucksensor ausliest.
Ich hatte auch schon alles zum laufen bekommen bis ich dann auf die Idee mit Subroutinen und lokalen Variablen und so gekommen bin.
Hier mein Programm:

$regfile = "m32def.dat"

$crystal = 8000000

Config Sda = Portc.1
Config Scl = Portc.0

Config Lcd = 20 * 4
Cursor Off
Cls

Declare Sub Ads1100(luftdruck() As String)


Dim K(7) As String * 7



Do

Call Ads1100(k(1))

Locate 2 , 1
Lcd "Druck: " ; K(7) ; " hPa"
Wait 1

Loop
End





Sub Ads1100(luftdruck() As String) 'Subroutine für ADS1100, Ausgabe: String * 7

Local D As Word
Local U As Single , P As Single


I2cstart
I2cwbyte &B10010000 'Adresse (A0) und schreiben
I2cwbyte &B10011100 'single conversion, 8SPS, gain 1, Messung durchführen
I2cstop

I2creceive &B10010001 , D , 0 , 2 'Adresse (A0) und lesen, Daten in Variable schreiben

Rotate D , Left , 8 'Bytes in richtige Reihenfolge vertauschen

U = D * 0.000152588
P = U + 0.76
P = P / 0.005295
Luftdruck(7) = Fusing(p , "####.##")


End Sub

Auf meinem Display erscheint erstmal keine Zahl, was ich schonmal komisch finde.
Und danach steht nur der Rest nach dem Komma dort (z.B. Druck: .76 hPa).
Kann mir einer sagen warum? Was habe ich falsch gemacht?
Und wenn ich schonmal dabei bin....
Ich will das ganze so aufbauen, dass ich später nur noch eine Include-datei einbinde.
...Ich weiss nur nicht wie man das macht und auf was man achten muss.
Gibts da einTutorial zu?

Vielen Dank
Marten83

Marten83
25.07.2007, 13:57
...Und nochwas!
Der ADC überträgt seine Daten wohl anders als Bascom es speichert.
Kann man das geschickter machen als ich es mit dem Rotate - Befehl gemacht habe?