Hallo Markus,
habe mir mal die Hilfe zu Bascom vorgenommen:
Port The name of the port to use. This must be a letter like A for portA.
Pin The pin number you want to use of the port. This must be in the range from 0-7.
Demnach liest du in deinem Programmbeispiel von D4 (Pin6) ein. Weiter oben war aber die Rede von Pin2 (RXD).
Allerdings fällt mir bei der Literatur der Hilfe auf, dass Bascom die Hardwareroutinen des Mega8 wohl gar nicht nutzt. Deshalb kann man auch jeden beliebigen Pin für die Funktion angeben.
Zurück zu deinem Programm. Wenn der Wert in einen String eingelesen ist und anschließend mit Print ausgegeben wird, wird mit Sicherheit wegen des Binärformats irgendwelcher Müll ausgegeben (siehe Terminal).
Besser ist doch, gleich in Variable einzulesen mit denen man auch was anfangen kann.
Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Ddrd = 0
Portd = 0
Dim Heading As Word
Dim H_low As Byte
Dim H_high As Byte
Dim Check As Byte
Dim Strtemp As String * 10
Do
Serin Strtemp , 0 , D , 0 , 9600 , 0 , 8 , 1 ' wartet auf CR (synch)
Serin H_low , 1 , D , 0 , 9600 , 0 , 8 , 1
Serin H_high , 1 , D , 0 , 9600 , 0 , 8 , 1
Serin Check , 1 , D , 0 , 9600 , 0 , 8 , 1
Heading = H_high * 256
Heading = Heading + H_low
Print "Kompass: " ; Heading
Loop
Allerdings darf die Ausgabe mit Print nicht an das Kompassmodul geschickt werden, sondern muss zum PC (Terminal). Achso, der Code oben ist nicht getestet sondern einfach so aufgeschrieben. Vielleicht kann ja jemand mit BASCOM-Erfahrung da mal draufgucken. Was erreicht werden soll steht ein paar Postings weiter oben.
Viele Grüße
Jörg
Lesezeichen