Hallo Robotiker,
ich bin uC Einsteiger, hab kaum Erfahrung mit Basic. In Delphi hingegen bin ich relativ fit und hab das Problem da auch schon umgesetzt.
Ich vermute dass sich in meinem Code vllt ein formaler Fehler eingeschlichen hat den ich nicht finde.
Wär nett wenn ihr mal drüberschauen könntet, warscheinlich fällt euch sofort was ins Auge.
Ich hab mit gleichen Compiler-Einstellungen ein anderes selbstgeschriebenes Programm übertragen, das klappt wunderbar.
Was das Programm tun soll:
Es soll eine Ampel gesteuert werden die den Schiessablauf bei einem Bogenturnier regelt. Nach bestimmten Zeiten wird geschaltet, es kann aber auch duch drücken einer Taste weiter geschaltet werden, falls alle Schützen vorzeitig fertig sind.
Vom Compiler angezeigte Fehler:
Error: 242 Line: 48 Source cariable does not match target variable[0]
Error: 35 Line: 50 3 parameters expected
Error: 44 Line: 50 2 variables expected
Error: 124 Line: 0 LOOP expected
Also nun mein Quelltext:
Code:
'Bogenampel von Niclas Müller (SC Hahnheim)
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
Dim Taste As Byte
Dim Ton As Integer
Dim I As Integer
Dim Zustand As Word
Const Wartent = 5
Const Gruent = 10
Const Gelbt = 5
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Portc = Output
'For I = 0 To 7
' Portc.i = 1
'Next I
Rot Alias Portc.0
Gelb Alias Portc.1
Gruen Alias Portc.2
Config Portd.7 = Output
Config Adc = Single , Prescaler = Auto
Config Porta.7 = Input
Do
Rot = 0
Gelb = 1
Gruen = 1
Taste = Tastenabfrage()
If Taste = 1 Then
Waitms Wartent 'Warten
Rot = 1
Gruen = 0
Do 'AB schiesst
Waitms 100
Taste = Tasetnabfrage() 'Line 48
If I =(gelbt * 10) 'Line 50
Then
Gruen = 1
Gelb = 0
End If
If Taste = 1
Then
I =(gruent * 10)
End If
I = I + 1
Loop Until I >(gruent * 10)
Gruen = 1
Gelb = 1
Rot = 0
Waitms Wartent 'Warten
Rot = 1
Gruen = 0
Do 'CD schiesst
Waitms 100
Tast = Tasetnabfrage()
If I = Gelbt * 10
Then
Gruen = 1
Gelb = 0
End If
If Taste = 1
Then
I =(gruent * 10)
End If
I = I + 1
Loop Until I >(gruent * 10)
Rot = 0
Gruen = 1
Gelb = 1
Loop
End
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton
End If
End Function
Lesezeichen