Irgendwie fehlt mir da was. Beispielcode sollte compilierfähig sein.
Dein Code würde ich etwa so umsetzen (Fehlende Typen einfach angenommen, natürlich ungestestet)):
Code:
$regfile = "M32def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600
Dim Position As Byte
Dim B As Byte
Dim Uz(6) As Byte
Dim Telegramm(60) As Byte
Dim Ttype As Byte At Telegramm + 1 Overlay
Dim Uz_std10 As Byte At Telegramm + 4 Overlay ' = Mid(telegramm , 5 , 1)
Dim Uz_std1 As Byte At Telegramm + 5 Overlay ' = Mid(telegramm , 6 , 1)
Dim Uz_min10 As Byte At Telegramm + 6 Overlay ' = Mid(telegramm , 7 , 1)
Dim Uz_min1 As Byte At Telegramm + 7 Overlay ' = Mid(telegramm , 8 , 1)
Dim Uz_sek10 As Byte At Telegramm + 8 Overlay ' = Mid(telegramm , 9 , 1)
Dim Uz_sek1 As Byte At Telegramm + 9 Overlay ' = Mid(telegramm , 7 , 1)
La1 alias Uz_std10
La2 Alias Uz_std1
La3 Alias Uz_min10
La4 Alias Uz_min1
La5 Alias Uz_sek10
Const Lebensz = 5 '???
Const Platzt = 6 '???
Dim Seg_array(10) As Byte '???
Config Serialin = Buffered , Size = 60 ', Bytematch = 013 ' Serielles Input
'Ausgänge:
Zeit_segmente Alias Portc.7 ' Ausgang für die Uhr
Rennz Alias Portc.6 ' Ausgang für die verbleibende Restzeit
Licht_5 Alias Portc.5 ' Ausgang für Lampe 5
Licht_4 Alias Portc.4 ' Ausgang für Lampe 4
Licht_3 Alias Portc.3 ' Ausgang für Lampe 3
Licht_2 Alias Portc.2 ' Ausgang für Lampe 2
Licht_1 Alias Portc.1 ' Ausgang für Lampe 1
Zeit_strobe_port Alias Portb '???
Zeit_strobe_pin Alias 0 '???
Data_channel Alias Portb.1
Clock_channel Alias Portb.2 '???
Do '???
If Ischarwaiting() = 1 Then
Gosub Empfangen
End If
Loop
End
Empfangen:
B = Inkey()
If B = 13 Then
Gosub Auswerten
Position = 0
Else
Incr Position
Telegramm(position) = B
End If
Return
Auswerten:
If Ttype = Lebensz Then
If Uz_std10 = 48 Then
Uz(1) = Seg_array(10)
Else
Uz(1) = Seg_array(uz_std10)
End If
If Uz_std1 = 48 Then
Uz(2) = Seg_array(10)
Else
Uz(2) = Seg_array(uz_std1)
End If
If Uz_min10 = 48 Then
Uz(3) = Seg_array(10)
Else
Uz(3) = Seg_array(uz_min10)
End If
If Uz_min1 = 48 Then
Uz(4) = Seg_array(10)
Else
Uz(4) = Seg_array(uz_min1)
End If
If Uz_sek10 = 48 Then
Uz(5) = Seg_array(10)
Else
Uz(5) = Seg_array(uz_sek10)
End If
If Uz_sek1 = 48 Then
Uz(6) = Seg_array(10)
Else
Uz(6) = Seg_array(uz_sek1)
End If
' LA1 = Mid(telegramm , 5 , 1)
' LA2 = Mid(telegramm , 6 , 1)
' LA3 = Mid(telegramm , 7 , 1)
' LA4 = Mid(telegramm , 8 , 1)
' LA5 = Mid(telegramm , 9 , 1)
If LA1 = 49 Then
Licht_1 = 1
Else
Licht_1 = 0
End If
If La2 = 49 Then
Licht_2 = 1
Else
Licht_2 = 0
End If
If La3 = 49 Then
Licht_3 = 1
Else
Licht_3 = 0
End If
If La4 = 49 Then
Licht_4 = 1
Else
Licht_4 = 0
End If
If La5 = 49 Then
Licht_5 = 1
Else
Licht_5 = 0
End If
Shiftout Data_channel , Clock_channel , Uz(1)
Shiftout Data_channel , Clock_channel , Uz(2)
Shiftout Data_channel , Clock_channel , Uz(3)
Shiftout Data_channel , Clock_channel , Uz(4)
Shiftout Data_channel , Clock_channel , Uz(5)
Shiftout Data_channel , Clock_channel , Uz(6)
Pulseout Zeit_strobe_port , Zeit_strobe_pin , 10000
Elseif Ttype = Platzt Then
nop
End If
Return
Lesezeichen