Hallo,
es läuft jetzt perfekt hier nun mein finaler Code, die wichtigen Punkte sind:
- Config Print verwenden
- print mit Strichpunkt hinten damit nur das wirkliche Zeichen gesendet wird
- Config Serialin = Buffered verwenden, da kommt es sehr auf die richtige Einstellung an
- Als Byte empfangen mit Inkey + Ischarwaiting
- und sehr viel Geduld !!
Code:
'Sensor
$regfile = "attiny2313.dat"
$crystal = 3579545
$baud = 4800
Portb = &B11111111
$hwstack = 32
$swstack = 10
$framesize = 40
Config Print = Portd.2 , Mode = Set
Config Pind.2 = Output
Config Debounce = 30
Waitms 300
Do
Debounce Pinb.0 , 0 , Schalter1 , Sub
Debounce Pinb.1 , 0 , Schalter2 , Sub
Debounce Pinb.2 , 0 , Schalter3 , Sub
Debounce Pinb.3 , 0 , Schalter4 , Sub
Debounce Pinb.4 , 0 , Schalter5 , Sub
Debounce Pinb.5 , 0 , Schalter6 , Sub
Debounce Pinb.6 , 0 , Schalter7 , Sub
Debounce Pinb.7 , 0 , Schalter8 , Sub
Loop
Schalter1:
Print "!10";
Return
Schalter2:
Print "!11";
Return
Schalter3:
Print "!12";
Return
Schalter4:
Print "!13";
Return
Schalter5:
Print "!14";
Return
Schalter6:
Print "!15";
Return
Schalter7:
Print "!16";
Return
Schalter8:
Print "!17";
Return
End
Code:
'Aktor
$regfile = "attiny2313.dat"
$crystal = 3579545
$baud = 4800
Dim A As String * 5
Dim Z As String * 1
Dim B As String * 5
Dim C As Byte
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialin = Buffered , Size = 6
Config Portb = Output
Enable Interrupts
Portd.2 = 0
Do
C = Ischarwaiting()
If C = 1 Then
C = Inkey()
A = A + Chr(c)
End If
If Len(a) > 2 Then
B = A
Z = Mid(a , 1 , 1 )
End If
If Z = "!" Then
B = Mid(a , 1 , 5)
End If
If B = "!10" Then
Toggle Portb.0
A = ""
Elseif B = "!11" Then
Toggle Portb.1
A = ""
Elseif B = "!12" Then
Toggle Portb.2
A = ""
Elseif B = "!13" Then
Toggle Portb.3
A = ""
Elseif B = "!14" Then
Toggle Portb.4
A = ""
Elseif B = "!15" Then
Toggle Portb.5
A = ""
Elseif B = "!16" Then
Toggle Portb.6
A = ""
Elseif B = "!17" Then
Toggle Portb.7
A = ""
End If
Waitms 10
Loop
End
Mfg Jürgen
Lesezeichen