robotxy
23.01.2005, 18:49
Hi!
Ich möchte mit einem VB Programm auf dem Rechner, den Portzustand ändern: Also wenn ich zB. A51* an den AVR sende, soll PortA.5 = 1 sein.
Außerdem wird der aktuelle Zustand aller Ports nach einer bestimmten Zeit regelmäßig an den PC gesendet. Aber irgendwie funzt das schalten der Ports nicht. Hoffe jemand kann mir Helfen,
MfG
Rasmus
$baud = 9600
$crystal = 16000000
Dim Typ(4) As Byte
Dim Empfang As String * 20
Dim Tmp As String * 2
Dim Tmp1 As String * 1
Dim Tmp2 As String * 1
Dim Tmp3 As String * 1
Dim Tmp3b As Byte
Dim Tmp2i As Integer
Declare Sub Sendstate()
Declare Sub Changestate()
Config Timer1 = Timer , Prescale = 1024
On Timer1 State
Enable Timer1
On Urxc Getrs
Enable Urxc
Enable Interrupts
Typ(1) = 1
Typ(2) = 1
Typ(3) = 1
Typ(4) = 1
If Typ(1) = 0 Then
Config Porta = Input
Else
Config Porta = Output
End If
If Typ(2) = 0 Then
Config Portb = Input
Else
Config Portb = Output
End If
If Typ(3) = 0 Then
Config Portc = Input
Else
Config Portc = Output
End If
If Typ(4) = 0 Then
Config Portd = Input
Else
Config Portd = Output
End If
Getrs:
Tmp = Inkey()
If Tmp = "*" Then
Changestate
End If
Empfang = Empfang + Tmp
Return
State:
Sendstate
Return
Sub Changestate()
Tmp1 = Mid(empfang , 1 , 1)
Tmp2 = Mid(empfang , 2 , 1)
Tmp2i = Val(tmp2)
Tmp3 = Mid(empfang , 3 , 1)
Tmp3b = Val(tmp3)
If Tmp1 = "A" Then
Porta.tmp2i = Tmp3b
Elseif Tmp1 = "B" Then
Portb.tmp2i = Tmp3b
Elseif Tmp1 = "C" Then
Portc.tmp2i = Tmp3b
Elseif Tmp1 = "D" Then
Portd.tmp2i = Tmp3b
End If
Empfang = ""
End Sub
Sub Sendstate()
Dim N As Integer
For N = 0 To 7
Print "A" +Str(n)+ Str(pina.n)
Next
For N = 0 To 7
Print "B" + Str(n) + Str(pinb.n )
Next
For N = 0 To 7
Print "C" + Str(n) + Str(pinc.n )
Next
For N = 0 To 7
Print "D" + Str(n) + Str(pind.n )
Next
Print "*"
End Sub
Ich möchte mit einem VB Programm auf dem Rechner, den Portzustand ändern: Also wenn ich zB. A51* an den AVR sende, soll PortA.5 = 1 sein.
Außerdem wird der aktuelle Zustand aller Ports nach einer bestimmten Zeit regelmäßig an den PC gesendet. Aber irgendwie funzt das schalten der Ports nicht. Hoffe jemand kann mir Helfen,
MfG
Rasmus
$baud = 9600
$crystal = 16000000
Dim Typ(4) As Byte
Dim Empfang As String * 20
Dim Tmp As String * 2
Dim Tmp1 As String * 1
Dim Tmp2 As String * 1
Dim Tmp3 As String * 1
Dim Tmp3b As Byte
Dim Tmp2i As Integer
Declare Sub Sendstate()
Declare Sub Changestate()
Config Timer1 = Timer , Prescale = 1024
On Timer1 State
Enable Timer1
On Urxc Getrs
Enable Urxc
Enable Interrupts
Typ(1) = 1
Typ(2) = 1
Typ(3) = 1
Typ(4) = 1
If Typ(1) = 0 Then
Config Porta = Input
Else
Config Porta = Output
End If
If Typ(2) = 0 Then
Config Portb = Input
Else
Config Portb = Output
End If
If Typ(3) = 0 Then
Config Portc = Input
Else
Config Portc = Output
End If
If Typ(4) = 0 Then
Config Portd = Input
Else
Config Portd = Output
End If
Getrs:
Tmp = Inkey()
If Tmp = "*" Then
Changestate
End If
Empfang = Empfang + Tmp
Return
State:
Sendstate
Return
Sub Changestate()
Tmp1 = Mid(empfang , 1 , 1)
Tmp2 = Mid(empfang , 2 , 1)
Tmp2i = Val(tmp2)
Tmp3 = Mid(empfang , 3 , 1)
Tmp3b = Val(tmp3)
If Tmp1 = "A" Then
Porta.tmp2i = Tmp3b
Elseif Tmp1 = "B" Then
Portb.tmp2i = Tmp3b
Elseif Tmp1 = "C" Then
Portc.tmp2i = Tmp3b
Elseif Tmp1 = "D" Then
Portd.tmp2i = Tmp3b
End If
Empfang = ""
End Sub
Sub Sendstate()
Dim N As Integer
For N = 0 To 7
Print "A" +Str(n)+ Str(pina.n)
Next
For N = 0 To 7
Print "B" + Str(n) + Str(pinb.n )
Next
For N = 0 To 7
Print "C" + Str(n) + Str(pinc.n )
Next
For N = 0 To 7
Print "D" + Str(n) + Str(pind.n )
Next
Print "*"
End Sub