Hallo
ich habe jetzt mal ein programm geschrieben das eine Zahl über
RS232 empfangen soll und dann auf einem LCD anzeigen.
es funktioniert soweit auch, nur zeigt er eine andere zahl an als ich übergebe.
wenn ich "1" übergebe zeigt er z.b. 192 an. eigentlich zeigt er bei allen zahlen etwas zwischen 192 und 196 an.
hier mal mein BASCOM-Code:
Code:
--------------------------------------------------------------------------------
$regfile = "m8515.dat" 'Mega8515-Deklarationen
$crystal = 4000000
$baud = 1200 'Baudrate der UART: 9600 Baud
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0
Enable URXC 'Interrupt URXC einschalten
Enable Interrupts 'Interrupts global zulassen 'Interrupt-Routine setzen
On Urxc Schreiben
Dim I As Byte
Cls
Schreiben:
Cls
I = Udr
Lcd I
Return
End 'end program
--------------------------------------------------------------------------------
Und hier mein Visual-Basic-Programm mit dem ich die Daten übermittle.
Code:
--------------------------------------------------------------------------------
Dim a As Byte
Private Sub Command_send_Click()
a = Text1.Text
Call senden(a, 50) 'aufruf der unterfunktion zum senden
End Sub
Private Sub Form_Load()
MSComm1.InputMode = Binary 'Binaere Datenuebertragung
MSComm1.Settings = "1200, n, 8, 1" '1200Baud, no Parity, 8 Bits Data length, 1 Stop Bit
MSComm1.CommPort = 1 'COM1
MSComm1.PortOpen = True 'oeffnen des Ports
End Sub
Private Function senden(zahl, pause) 'unterfunktion zum senden der bytes
Dim out(2) As Byte '"as byte" muss dastehen weil sonst en fehler kommt
out(0) = 0 'erste zu übergebende zahl
out(1) = zahl 'zweite zu übergebende zahl
MSComm1.Output = out 'ausgabe der zahlen
Sleep (pause) 'pause
End Function
--------------------------------------------------------------------------------
Ich ich verwende das MSComm - Objekt um die daten zu senden. ich weiß nicht ob der fehler am VB-programm oder am BASCOM-Programm liegt. ich hoffe ihr könnt mir helfen.
ich habe es auch schon ohne interrupts probiert (wie auf seite 1 geschrieben). kommt genau das gleiche raus.
muss ich dem µC noch sagen dass es keine parity, 8 databits und 1 stopbit sind?
einen normalen text habe ich auf dem LCD schon angezeigt und das hat einwandfrei funktioniert.
bitte helft mir!!!
Majuz
Lesezeichen