Hallo,
hier mein Code.
Bisher sehe ich nur etwas wenn ich in Terminalfenster 1200Baud einstelle.
leider nicht mein Text sonder nur wirre Zeichen
Hier mein Code
	Code:
	$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
Config Pinc.0 = Input                                       ' Schaltport
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input                                       ' N.N.
Config Portb.0 = Output                                     ' Schaltport
Config Portb.1 = Output
Config Portb.2 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Config Portb.5 = Output                                     ' Kontrollport
Config Portd.2 = Output                                     ' RS485
Dim I As Byte
Dim Key As Byte
Dim S As String * 7
Dim A As String * 4
Dim X1 As Boolean
Dim X2 As Boolean
Dim X3 As Boolean
Dim X4 As Boolean
Dim Z As String * 1
' **** Timer *********************************************
Dim T1 As Long
Dim T2 As Long
Dim T3 As Long
Dim T4 As Long
Dim T5 As Long
Dim R1 As Bit
Dim R2 As Bit
Dim R3 As Bit
Dim R4 As Bit
Dim R5 As Bit
T1 = 0
T2 = 0
T3 = 0
T4 = 0
T5 = 0
Const Keys = 5
'Schaltstelle "$O001"                                        ' Name der Schaltstelle
                                                             ' Format: $O = Output
                                                             '         $I = Input
                                                             '         $IO = InOut
' **** Programmstart **************************************
Do
   R1 = Portb.0
   R2 = Portb.1
   R3 = Portb.2
   R4 = Portd.6
   R5 = Portd.7
' **** RS485 Aktivieren und Bus prüfen
On Urxc Onrxd
Enable Urxc
Enable Interrupts
If Len(s) > 3 Then
    A = S
      S = ""
      Goto Pruefung
Else
     Disable Interrupts
 Disable Urxc
 'Portd.2 = 1
 'Print
 'Portd.2 = 0
   End If
'Zeitschalter (Zähler)           10.000.000 = 30 Minute
 If T1 > 0 Then T1 = T1 + 1
 If T1 > 30000000 Then
 Portd.6 = 0
 T1 = 0
 Else
 End If
 If T2 > 0 Then T2 = T2 + 1
 If T2 > 80000000 Then
 Portb.0 = 0
 T2 = 0
 Else
 End If
 If T3 > 0 Then T3 = T3 + 1
 If T3 > 30000000 Then
 Portb.2 = 0
 T3 = 0
 Else
 End If
 If T4 > 0 Then T4 = T4 + 1
 If T4 > 15000000 Then
 Portd.7 = 0
 T4 = 0
 Else
 End If
 If T5 > 0 Then T5 = T5 + 1
 If T5 > 30000000 Then
 Portb.1 = 0
 T5 = 0
 Else
 End If
 Portb.5 = 1
 For I = 1 To Keys
 Key = I
 Select Case Key
 Case 1 : Debounce Pinc.0 , 0 , Key_o1 , Sub                'Port 1.
 Case 2 : Debounce Pinc.1 , 0 , Key_o2 , Sub                'Port 2
 Case 3 : Debounce Pinc.2 , 0 , Key_o3 , Sub                'Port 3
 Case 4 : Debounce Pinc.3 , 0 , Key_o4 , Sub                'Port 4
 Case 5 : Debounce Pinc.4 , 0 , Key_o5 , Sub                'Port 5
 End Select
Next
Loop
   Key_o1:
   Toggle Portb.0                                           'Buchse 1
   Gosub Zustand
   If T2 = 0 Then
   T2 = 1
   Else
   T2 = 0
   End If
   Return
   Key_o2:
   Toggle Portb.1                                           'Buchse 2
   Gosub Zustand
   If T5 = 0 Then
   T5 = 1
   Else
   T5 = 0
   End If
   Return
   Key_o3:
   Toggle Portb.2                                           'Buchse 3
   Gosub Zustand
   If T3 = 0 Then
   T3 = 1
   Else
   T3 = 0
   End If
   Return
   Key_o5:
   Toggle Portd.6                                           'Buchse 4
   Gosub Zustand
   If T1 = 0 Then
   T1 = 1
   Else
   T1 = 0
   End If
   Return
   Key_o4:
   Toggle Portd.7                                           'Buchse 5
   Gosub Zustand
   If T4 = 0 Then
   T4 = 1
   Else
   T4 = 0
   End If
   Return
'****************************************************
 Onrxd:
  S = S + Chr(udr)
 Return
'****************************************************
Pruefung:
 Z = Mid(a , 1 , 1 )
 If Z = "!" Then
 Goto Auswerter
 A = Mid(s , 1 , 6)
 Else
 S = ""
 End If
Return
'****************************************************
Zustand:
 Disable Interrupts
 Disable Urxc
 Waitms 100
   R1 = Portb.0
   R2 = Portb.1
   R3 = Portb.2
   R4 = Portd.6
   R5 = Portd.7
   Disable Interrupts
   Disable Urxc
   Waitms 5
   Portd.2 = 1
   Waitms 10
   Print
   Print "$O001" ; R1 ; R2 ; R3 ; R4 ; R5
   Waitms 5
   Portd.2 = 0
  Return
'****************************************************
Auswerter:
 Disable Interrupts
 Disable Urxc
 Waitms 100
 Portd.2 = 1
 Waitms 10
 Print
 'Print A
 Print "$O001" ; R1 ; R2 ; R3 ; R4 ; R5
 Waitms 100
 Portd.2 = 0
 Return
 End
 
						
					
Lesezeichen