Ich habe das mal auf das Notwendigste abgespeckt:
Sender:
Empfaenger:Code:$regfile = "m128def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 20 $framesize = 40 $baud = 9600 Config Pinc.6 = Output Config Pine.2 = Output Config Graphlcd = 240 * 64 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6 Dim A As Byte Bl Alias Portc.6 Rs485 Alias Porte.2 Bl = 1 Rs485 = 1 'Senden Cursor Off Cls Locate 1 , 1 Lcd "RS485 Sender" A = 128 Do Printbin A Waitms 500 Loop End
Es wird nur ein einziges Byte (128) uebertragen. Sobald der UART ein Zeichen empfaengt wird ein Interrupt ausgeloest. In der Urxc-Isr wird dann das Byte ausgelesen (Db=UDR). Und das war's dann auch schon. Eigentlich total simpel.Code:$regfile = "m128def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 20 $framesize = 40 $baud = 9600 Config Pinc.6 = Output Config Pine.2 = Output Config Graphlcd = 240 * 64 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6 Rs485 Alias Porte.2 Enable Interrupts Enable Urxc On Urxc Isrlabel Dim A As Bit , Db As Byte Bl Alias Portc.6 ' Hintergrundbeleuchtung LC-Display Bl = 1 A = 0 Rs485 = 0 'Empfangen Cursor Off Cls Locate 1 , 1 Lcd "RS485 Empfaenger" Do If A = 1 Then Locate 4 , 1 Lcd Db A = 0 End If Loop End Isrlabel: Db = Udr A = 1 Return
Mit freundlichen Gruessen
Digitali







Zitieren

Lesezeichen