Hi Leute,
wollte mal die funktion Sin in Bascom ausprobieren. Geht nicht:
E ist Integer
F ist Integer
G ist Long
(hab auch schon alle Variationen durch mit Integer, Long und Single)
E = E + F
G = sin (e)
Hier kommt der Fehler: Integer or Long expected for ABS()
das ganze mit g=e*sin geht auch nicht, es kommt jedes mal der Fehler:
source variable does not match the target variable
Wenn ich G=sin(1) programmiere geht es, aber Variablen mag Bascom in der Klammer wohl nicht sehn?!
Wer sich das ganze antun will kann mal reinschauen, aber vorsicht, die Kommentare stimmen nicht und ich bin Bascom newbie und kann die wenigsten Befehle richtig programmieren, also nicht wundern wie das programmiert wurde ^^ :
PS: Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0Code:'--------------------------------------------------------------------------' ' Ingo Lippenberger ' ' 2007-Keine Gewähr auf Funktion ' ' Freeware ' '--------------------------------------------------------------------------' $regfile = "m8def.dat" 'definieren des verwendeten Chips $crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz) $baud = 9600 'definieren der Baudrate $framesize = 32 'notwendig für größere Programme $swstack = 32 $hwstack = 32 Dim A As Integer 'dimensionieren der verwendeten Variable Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim G As Long Dim Abs As Long Dim W As Long 'dimensionieren der verwendeten Variable Dim X As Long Dim Y As Long Config Int1 = Rising 'configuriere Int0 Auf Low Level Enable Interrupts 'einschalten der Interrupts Enable Int1 'einschalten Von Interrupt Int0 On Int1 Einstellen 'springe Zu einstellen_von _int0 Config Portd.5 = Output Config Portd.6 = Output 'Ein Pin wird als Ausgang konfiguriert Config Portd.7 = Output 'Ein Pin wird als Eingang konfiguriert Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Led1 Alias Portd.5 Led2 Alias Portd.6 'Portd.5 wird umbenannt zu Led1 Summer Alias Portd.7 Taster1 Alias Pind.2 Taster2 Alias Pind.3 Taster3 Alias Pind.4 Ausgang1 Alias Portc.1 Ausgang2 Alias Portc.2 Ausgang3 Alias Portc.3 A = 500 Einstellen: Led1 = 1 Led2 = 1 Do If Taster1 = 1 Or Taster2 = 1 Or Taster3 = 1 Then Waitms 1000 End If If Taster1 = 1 And Taster2 = 1 And Taster3 = 1 Then Led1 = 0 Led2 = 0 Return End If If Taster1 = 1 And Taster2 = 1 And Taster3 = 0 Then A = A * 2 End If If Taster1 = 0 And Taster2 = 1 And Taster3 = 1 Then A = A / 2 End If If Taster1 = 1 And Taster2 = 0 And Taster3 = 0 Then Gosub Sinus End If If Taster1 = 0 And Taster2 = 0 And Taster3 = 1 Then Gosub Dreieck End If If Taster1 = 0 And Taster2 = 1 And Taster3 = 0 Then Gosub Rechteck End If Print A Loop Sinus: B = A + A E = 0 F = 0 Do D = A / 10 E = E + F G = Sin * E Y = G * 5 Gosub Angleichvorgang F = F + 36 If F > 300 Then F = 0 End If Loop Dreieck: B = A + A E = 1 F = 1 Do D = A / 10 Y = 0.5 * E Gosub Angleichvorgang E = E * F If E = 10 Or E = 1 Then F = F * -1 End If Print "stufe" ; E Print "zählrichtung" ; F Print W ; "sollwert" Print "Frequenz" B "in ms" Loop Rechteck: B = A + A Print "Frequenz" B "ms" Do Led1 = 1 Ausgang1 = 1 Ausgang2 = 1 Ausgang3 = 1 Waitms A Led1 = 0 Ausgang1 = 0 Ausgang2 = 0 Ausgang3 = 0 Waitms A Loop Angleichvorgang: Do W = Getadc(0) X = W / 204.8 If X < Y Then Led1 = 1 Led2 = 0 Ausgang1 = 1 Ausgang2 = 1 Ausgang3 = 1 End If If X > Y Then Led1 = 0 Led2 = 1 Ausgang1 = 0 Ausgang2 = 0 Ausgang3 = 0 End If Waitms 1 Incr C If C = D Then Return End If Loop End
Das hab ich einfach mal von dem Sinus- Beispiel von der Bascom Hilfe reinkopiert, bringt aber auch keine Besserung (ich weis nichtmal was man damit festlegt).







Zitieren


Lesezeichen