Hallo,
ich versuch seit einiger zeit über die UART einen daten string zu empfangen. 20 byte lang.
ohne interupts geht das alles jetzt möchte ich aber das er diese aktion im hintergrung macht und somit wollte ich das mit Interupts machen.
mit diesem code geht es nicht. er bleibt aus ergend welchen gründen in der rotine
in diesem programm soll er mir einfach den eingegebenen string auf dem LCD anzeigen.
Code:
$regfile = "m128def.dat"
$crystal = 7372800
$baud = 9600
$baud1 = 9600
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Lcdpin = Pin , Db4 = Porte.5 , Db5 = Porte.4 , Db6 = Porte.3 , Db7 = Porte.2 , E = Porte.7 , Rs = Porte.6
Config Lcd = 20 * 4
Open "com1:" For Binary As #1
Open "com2:" For Binary As #2
Dim S As String * 20
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Do
Cls
Lcd S
Wait 2
Loop
Onrxd:
Input #1 , S
Return
Close #1
Close #2
mit diesem klapt es weil ich alles in der rotine abarbeite und anzeigen lasse
Code:
$regfile = "m128def.dat"
$crystal = 7372800
$baud = 9600
$baud1 = 9600
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Lcdpin = Pin , Db4 = Porte.5 , Db5 = Porte.4 , Db6 = Porte.3 , Db7 = Porte.2 , E = Porte.7 , Rs = Porte.6
Config Lcd = 20 * 4
Open "com1:" For Binary As #1
Open "com2:" For Binary As #2
Dim S As String * 20
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Do
Loop
Onrxd:
Input #1 , S
Cls
Lcd S
Wait 2
Return
Close #1
Close #2
nun meine frage warum geht es nicht mit dem input befehl?
gibt es nur die möklichkeuit das über i = udr zumachen und jedes byte einzeln auszulesen denn damit geht das zumindest kann ich das erste byte auslesen
komm aber nicht weiter da ich nicht weis wie ich die einzelnen bytes zusammenfügen kann.
kann mir jemand helfen?
gruß Nico
Lesezeichen