Bascom BASCOM ; Erste Schritte zum Ausprobieren

Du vermischt schon wieder Bascom und Assembler / C.
In Bascom nutzt du die Config Befehle für genau diese Zwecke.
Config TimerX, On X ISR_Wasauchimmer.
Nix anders als zuletzt mit Timer2.

Wie auch immer, 1<<CS01, das ist Bit shifting. Eine 1 wird um x Stellen nach links (typisch) oder rechts geschoben. CS01 ist hierbei die Bit Position.
1 = 0000_0001
sagen wir CS01 hat den Wert von 4 (kA obs stimmt, ist eh irrelevant), ergibt es:
0001_0000
Die 1 wird um 4 Bits nach links geschoben.
 
Hallo Heini-14
Ok, ich werde in Zukunft nur noch das kopieren, was ich selbst schon geschrieben habe bzw. gelernt und verstanden. Wenn ich also beim Atmega88a den Timer0 im CTC Modus verwenden möchte, kann ich das in Bascom einfach so schreiben. Will ich aber nachschlagen und das Datenblatt sehe, fällt mir auf, dass die Schreibweise ganz anders erfolgt, wie in Bascom.
Wenn Du helfen möchtest, bräuchte ich mal ein Erklärung hierzu. Für mich wäre Timer0 = CS00.

Anhang anzeigen 8126
Am Ende wird es so // Timer 0 konfigurieren TCCR0 = (1<<CS01); // Prescaler 8 // Overflow Interrupt erlauben TIMSK |= (1<<TOIE0); geschrieben.
Warum das 1<<CS01.
Da ich schon von Anfang an Probleme habe, tue ich mich mit Copy/Paste leichter, aber verstehe zum Schluß auch nicht ganz, wenn es funktioniert oder auch nicht.

Aus der Tabelle ist ersichtlich, wie beim TIMER0 der Prescaler "konfiguriert" wird (Prescaler = Vorteiler) => CS02 - CS00 bestimmen diesen:
TCCR = (1<<CS01) bedeutet nichts anderes, als dass in das TCCR Register an "Bitstelle" 1 (= CS01) eine "1" geschrieben wird und somit der Vorteiler (= Prescaler) 8 ist => CPU_Takt/8.


Wenn Du TIMER0 OHNE Vorteiler haben willst, dann TCCR = (1<<CS00) also wird in "Bitstelle" 0 eine "1" geschrieben.
Ist im Prinzip ganz einfach: 1<<CS00 heißt nur , dass in das CS00 eine "1" geschrieben wird.

Die Register CS00 - CS02 beim TCCR bestimmen den Vorteiler für die Frequenz.

Klar soweit?

mfg

Hero_123
 
Weil:
4 = 0000_0100
und nicht
1<<4 = 0001_0000

Oder nehmen wir:
7 = 0000_0111
statt
1<<7 = 1000_0000

Es wird also das Bit an Position X gesetzt, nicht der Wert von X.

Und du brauchst das Datenblatt nur in so weit um nach sehen zu können ob die Komponente, beispielsweise TimerX, den Prescaler / 32 hat, oder CTC unterstützt, etc. Alles Andere nimmt dir Bascom ja schon ab, du machst es dir nur unnötig schwer.
 
Hallo

Bei allem nötigen Respekt - ohne Blick in das Datenblatt des jeweiligen Prozessors ist die Funktionsweise des Prozessors nicht (sofort) ersichtlich und man sollte schon verstehen, was die einzelnen Register und die Manipulation derselben bewirken.

Bascom mag einem zwar sehr viel abnehmen, aber ob es reicht ...;)

Nichts für ungut.

mfg

Hero_123
 
Hallo Heini-14

Wie würde das dann aussehen, wenn ich Prescale 64 haben möchte. Bei Prescale 256 müsste es nach meiner Theorie (2<<CS00) sein, oder?

Nein - Prescaler 256 => wie aus der Tabelle ersichtlich,:
- muss TCCR = (1<<CS02) sein (d.h. an Bitstelle 2 = CS02 wird eine "1" geschrieben, die anderen CS01 = 0, CS00 = 0 (in CS01 wird nichts geschrieben, in CS00 wird auch nichts geschrieben.

Prescaler 64:
da muss in CS01 = 1 UND in CS00 eine 1 ==> TCCR |= (1<<CS01)|(1<< CS00) (in CS02 wird nichts geschrieben; ist ja "0" lt Tabelle).

1<<CS02 heißt ja nichts anderes, als dass eine "1" an die entsprechende Stelle geschrieben wird - eben an CS02.
Das Zeichen "<<" bedeutet "schiebe nach links", also "1<<CS02" heißt "schiebe eine 1 an die CS02-Stelle" (und somit wird CS02 = "1")
2<<CS00 ist Unsinn.

mfg
Hero_123
 
Zuletzt bearbeitet:
Wenn das jetzt richtig ist, müsste ich erst einmal diesen Teil verstanden haben.
Prescaler 256:
(1<<CS02)
Prescaler 1024:
(1<<CS02)|(1<< CS00)
 
Danke!
Irgend wann möchte ich auch mal das weiter oben entstandene Uhr Programm mit meinem I2C Display verwenden können. Dieses funktioniert nur mit dem Arduino Board und dieses ist nicht so einfach, wie in Bascom zu schreiben. Aber bis dahin muss ich noch ein bisschen lernen.
 
Ich habe mir gerade meine beiden zerschossenen Atmega8 löschen lassen und beide wurden auch wieder von Bascom erkannt und beschreiben lassen.
Nachdem ich versucht habe, diesen Code aufzuspielen, wieder alles AUS. Dabei war nur die Grüne Led zur Kontrolle dran.
Was stimmt mit diesem Code nicht?


CodeBox BascomAVR
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 40
$framesize = 40
'----------------------------------------------------------------------------
Dim Count1 As Byte
Dim Count2 As Byte
Dim Second As Word
Dim Minute As Word
Dim Hour As Word
Dim Day As Word
Dim Month As Word
Dim Year As Word
Dim Adjust As Byte
Dim Temp As Byte
Dim Dayov As Byte
Dim Irq As Byte
Dim S1 As String * 2
Dim S2 As String * 2
Dim S3 As String * 2
Dim S4 As String * 2
Dim S5 As String * 2
Dim S6 As String * 4
Config Pinb.0 = Input
Portb.0 = 1
Config Pinb.1 = Input
Portb.1 = 1
Config Pinb.2 = Input
Portb.2 = 1
Config Portc.3 = Output
Portb.5 = 0
Key0 Alias Pinb.0
Key1 Alias Pinb.1
Key2 Alias Pinb.2
Gruen Alias Portc.3
'Startoption-----------------------------------------------------------------
Second = 00                             'muss 0 sein
Minute = 59
Hour = 23
Day = 31
Month = 12
Year = 2019
'Initialisiere LCD-----------------------------------------------------------
Init:
   Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , _
   E = Portd.3 , Rs = Portd.2
   Config Lcd = 16 * 2
   Initlcd
   Cls
   Cursor Off
'Konfiguration Timer 2 (CTC, 8MHz/256/249 = 8ms)-----------------------------
   Config Timer2 = Ctc , Prescale = 256 , Clear_timer = 1
   Ocr2 = 249                           ' Setze Maximalwert für Timer 2 (CTC)
   On Oc2 Isr_oc2                       ' Setze ISR für Timer 2 Overflow Compare
   Enable Oc2                           ' Aktiviere Timer 2 Overflow Compare In
   Config Watchdog = 2048
   Start Watchdog
   Enable Interrupts
'----------------------------------------------------------------------------
Main:
'Format der LCD-Anzeige------------------------------------------------------
   Home
   S1 = Str(hour)
   S1 = Format(s1 , "00")
'----------------------------------------------------------------------------
   S2 = Str(minute)
   S2 = Format(s2 , "00")
'----------------------------------------------------------------------------
   S3 = Str(second)
   S3 = Format(s3 , "00")
'----------------------------------------------------------------------------
   S4 = Str(day)
   S4 = Format(s4 , "00")
'----------------------------------------------------------------------------
   S5 = Str(month)
   S5 = Format(s5 , "00")
'----------------------------------------------------------------------------
   S6 = Str(year)
   S6 = Format(s6 , "0000")
'Anzeige auf Display---------------------------------------------------------
   If Irq.0 = 1 Then
      Locate 2 , 13
      Lcd S3
      Locate 2 , 11
      Lcd ":"
      Locate 2 , 8
      Lcd S2
      Locate 2 , 6
      Lcd ":"
      Locate 2 , 3
      Lcd S1
      Locate 1 , 3
      Lcd S4
      Locate 1 , 7
      Lcd S5
      Locate 1 , 11
      Lcd S6
   End If
   Irq.0 = 0
   Config Powermode = Idle
   Reset Watchdog
   Goto Main
   'End
'Sekundentakt für Uhr und 1/5tel Takt zum stellen der Uhr--------------------
Isr_oc2:
   Incr Count1
   If Count1 = 25 Then
      Count1 = 0
      Gosub Tick_200ms
   End If
   Incr Count2
   If Count2 = 125 Then
      Count2 = 0
      Toggle Gruen
      Gosub Tick_1s
   End If
Return
'--------------Uhr läuft im Sekundentakt-------------------------------------
Tick_1s:
   Incr Second
   If Second >= 60 Then
      Second = 0
      Incr Minute
   End If
   If Minute >= 60 Then
      Minute = 0
      Incr Hour
   End If
   If Hour >= 24 Then
      Hour = 0
      Incr Day
   End If
   If Day >= 32 Then
      Day = 1
      Select Case Month
         Case 1
            Dayov = 32
         Case 3
            Dayov = 32
         Case 5
            Dayov = 32
         Case 7
            Dayov = 32
         Case 8
            Dayov = 32
         Case 10
            Dayov = 32
         Case 12
            Dayov = 32
         Case 4
            Dayov = 31
         Case 6
            Dayov = 31
         Case 9
            Dayov = 31
         Case 11
            Dayov = 31
         Case 2
            If Temp = 0 Then
               Dayov = 30
            Else
               Dayov = 29
            End If
      End Select
      If Day >= Dayov Then
         Day = 1
         Incr Month
      End If
      If Month >= 13 Then
         Month = 1
         Incr Year
      End If
   End If
   Irq.0 = 1
Return
'--------------Uhr einstellen Stunden und Minuten----------------------------
Tick_200ms:
   Select Case Adjust
      Case 1:
         If Key1 = 0 Then
            Incr Year
         End If
      Case 2:
         If Key1 = 0 Then
            Incr Month
         End If
      Case 3:
         If Key1 = 0 Then
            Incr Day
         End If
      Case 4:
         If Key1 = 0 Then
            Incr Hour
         End If
      Case 5:
         If Key1 = 0 Then
            Incr Minute
         End If
      Case 6:
         If Key1 = 0 Then
            Incr Second
         End If
   End Select
Return
 
Entschuldigung!
Kommando zurück, da war noch der dritte Atmega8 drin, den ich die Fuse Bit 111001: reserved verpasst habe.
 
Der GCC macht aus
[…]folgendes:
[…]
Nicht schlecht, also wird bereits der Vergleich wegoptimiert. Was ist mit If ((Bytevariable AND Bytevariable)>127) Then…?
In Bascom und LunaAVR wird das nicht wesentlich anders umgesetzt sein
Bascom läßt, wie bereits festgestellt, bei der Bedingung einer IF-Instruktion gar keine Rechenoperationen zu. Es dürfen nur (einfache)Bedingungen logisch verknüpft werden
2<<CS00 ist Unsinn.
Kommt drauf an...
es wird eine dezimale zwei, also 10binär an die Stelle von CS00 geschoben. Üblicherweise (aber nicht immer zwingend) steht "links" von CS00 CS01...
Wo kann sowas Sinn machen?
z.B. bei den Compare Output Modes.
Bei den konventionellen (bei den X-Cores mag das anders sein) AVR hast Du vier wählbare Output-Modes, die durch zwei Bits festgelegt werden.
Dabei steht das jeweilige COMnx1-Bit immer links vom COMnx0-Bit.
Genau genommen spielt der WGM da noch mit rein, aber vereinfacht gesagt hast Du:
0 = disconnected Mode
1 = toggle Mode
2 = non-inverting/clear Mode
3 = inverting/set Mode

Wenn Du diese Tabelle also hast, kannst Du zB KanalA in den invertierenden und KanalB in den nicht invertierenden Modus schicken, mit (Pseudocode):
TCCR1A=(3<<COM1A0)|(2<<COM1B0), mit TCCR1A=(0<<COM1A0)|(0<<COM1B0) schaltest Du die Ausgabe wieder ab.
Sinnigerweise verwendest Du natürlich später nicht mehr die Zahlen selbst, sondern definierst Dir entsprechend der Tabelle Konstanten, und verwendest die.
(jaja, RMW zum schützen der anderen Bits und so...)
da war noch der dritte Atmega8 drin, den ich die Fuse Bit 111001: reserved verpasst habe.
Welches der drei Fusebytes hast Du damit beschrieben? Kannst Du den noch auslesen (Signatur und so)? (ggf mit extern anliegendem Takt)
 
Aber bis dahin muss ich noch ein bisschen lernen.
Fang damit an deinen Quelltext zu kommentieren!
Damit zwingst du dir selbst schon auf dich damit auseinander zu setzen.
Und hör auf nach fertigen Lösungen zu googeln, sondern fang an den Programmablauf zu verstehen. Was passiert wo und warum. Das ist doch nur logisches Denken. Wenn dies dann das, was ist a wenn a = b + c, ... wie kann man Aufrufe um Faktor 100 verlangsamen, ...
Wenn das nicht sitzt, sorry, dann wird das nie was. Ich denke ich spreche hier für alle wenn ich sage, wir helfen dir gerne beim Lernen. Mit Aufgaben etc. aber du musst auch deine Grenzen sehen. I2C ist jetzt noch zu hoch für dich, das Fundament ist noch zu feucht.
 
Tja. "Ist da noch Spannung drauf? Naja, sehen wir ja. *PENG* ... Jetzt nicht mehr."
The magic smoke escaped.
Dann hilft nur noch High Voltage Programming (wenn überhaupt) mittels AVR Dragon, Galep oder ähnlichen Tools.
Da die vernünftigen aber unverhältnismäßig teurer sind als der Chip, verbuch dein "reserved" Experiment als Lehrgeld. R.I.P. Mega8
 
verbuch dein "reserved" Experiment als Lehrgeld.
Hab ich schon gemacht, sprich abgehakt.
Übrigens, deine Konstruktion der Monate mit Case haut vorne und hinten nicht hin. Zu mindestens mit Bascom nicht. Habe verschiedene Test's durchgeführt. Mal gehen die 31er Monate und andersherum die 30er. Dann aber auch nicht alle 30er. Der Monat 7 ging, der Monat 9 wieder nicht. Der 31.12.2019 wiederum hat komplett alles umgeschalten. Werde versuchen das ganze mit If.. zu realisieren.
 
Also das setzt dem Ganzen jetzt aber die Krone auf...
grrrrrr.gif

Wundert mich nicht, sind ja auch diverse Fehler drin, in deiner Version.

Bitteschön, zum selber kontrollieren, Jahr 2019:
Quelltext (prinzipiell der Selbe, hier nur ohne Timer und mit Datei speichern, VB.Net):


CodeBox VisualBasic

Dim Day As Byte = 1
Dim Month As Byte = 1
Dim Year As Byte = 19
Dim sbOut As New Text.StringBuilder
Const Incr1 As Byte = 1 ' only because vb.net uses int32 by default

Do

sbOut.AppendLine(String.Format("{0:00}.{1:00}.20{2:00}", Day, Month, Year))

Day += Incr1

Dim DayOv As Byte ' Temp storage for day overflow
Select Case Month
Case 1, 3, 5, 7, 8, 10, 12 ' Months with 31 days
DayOv = 32 ' Set overflow
Case 4, 6, 9, 11 ' Months with 30 days
DayOv = 31 ' Set overflow
Case 2 ' The allmighty februrary
If (Year And 3) = 0 Then ' Check for leap year
DayOv = 30 ' It is, set overflow (30, cause 29 days)
Else ' No leap year
DayOv = 29 ' Set overflow (29, cause 28 days)
End If
End Select
If Day >= DayOv Then ' Check for overflow
Day = 1 ' Reset to 1
Month += Incr1 ' Increment month
End If

If Month >= 13 Then ' Check for overflow
Month = 1 ' Reset to 1
Year += Incr1 ' Increment year
End If

If Year >= 100 Then ' Check for overflow (only tenths and ones)
Year = 0 ' Reset to 0
End If

If Year = 20 Then Exit Do

Loop

IO.File.WriteAllText("C:\tmp\date.txt", sbOut.ToString)
Stop
Ausgabe:
01.01.2019
02.01.2019
03.01.2019
04.01.2019
05.01.2019
06.01.2019
07.01.2019
08.01.2019
09.01.2019
10.01.2019
11.01.2019
12.01.2019
13.01.2019
14.01.2019
15.01.2019
16.01.2019
17.01.2019
18.01.2019
19.01.2019
20.01.2019
21.01.2019
22.01.2019
23.01.2019
24.01.2019
25.01.2019
26.01.2019
27.01.2019
28.01.2019
29.01.2019
30.01.2019
31.01.2019
01.02.2019
02.02.2019
03.02.2019
04.02.2019
05.02.2019
06.02.2019
07.02.2019
08.02.2019
09.02.2019
10.02.2019
11.02.2019
12.02.2019
13.02.2019
14.02.2019
15.02.2019
16.02.2019
17.02.2019
18.02.2019
19.02.2019
20.02.2019
21.02.2019
22.02.2019
23.02.2019
24.02.2019
25.02.2019
26.02.2019
27.02.2019
28.02.2019
01.03.2019
02.03.2019
03.03.2019
04.03.2019
05.03.2019
06.03.2019
07.03.2019
08.03.2019
09.03.2019
10.03.2019
11.03.2019
12.03.2019
13.03.2019
14.03.2019
15.03.2019
16.03.2019
17.03.2019
18.03.2019
19.03.2019
20.03.2019
21.03.2019
22.03.2019
23.03.2019
24.03.2019
25.03.2019
26.03.2019
27.03.2019
28.03.2019
29.03.2019
30.03.2019
31.03.2019
01.04.2019
02.04.2019
03.04.2019
04.04.2019
05.04.2019
06.04.2019
07.04.2019
08.04.2019
09.04.2019
10.04.2019
11.04.2019
12.04.2019
13.04.2019
14.04.2019
15.04.2019
16.04.2019
17.04.2019
18.04.2019
19.04.2019
20.04.2019
21.04.2019
22.04.2019
23.04.2019
24.04.2019
25.04.2019
26.04.2019
27.04.2019
28.04.2019
29.04.2019
30.04.2019
01.05.2019
02.05.2019
03.05.2019
04.05.2019
05.05.2019
06.05.2019
07.05.2019
08.05.2019
09.05.2019
10.05.2019
11.05.2019
12.05.2019
13.05.2019
14.05.2019
15.05.2019
16.05.2019
17.05.2019
18.05.2019
19.05.2019
20.05.2019
21.05.2019
22.05.2019
23.05.2019
24.05.2019
25.05.2019
26.05.2019
27.05.2019
28.05.2019
29.05.2019
30.05.2019
31.05.2019
01.06.2019
02.06.2019
03.06.2019
04.06.2019
05.06.2019
06.06.2019
07.06.2019
08.06.2019
09.06.2019
10.06.2019
11.06.2019
12.06.2019
13.06.2019
14.06.2019
15.06.2019
16.06.2019
17.06.2019
18.06.2019
19.06.2019
20.06.2019
21.06.2019
22.06.2019
23.06.2019
24.06.2019
25.06.2019
26.06.2019
27.06.2019
28.06.2019
29.06.2019
30.06.2019
01.07.2019
02.07.2019
03.07.2019
04.07.2019
05.07.2019
06.07.2019
07.07.2019
08.07.2019
09.07.2019
10.07.2019
11.07.2019
12.07.2019
13.07.2019
14.07.2019
15.07.2019
16.07.2019
17.07.2019
18.07.2019
19.07.2019
20.07.2019
21.07.2019
22.07.2019
23.07.2019
24.07.2019
25.07.2019
26.07.2019
27.07.2019
28.07.2019
29.07.2019
30.07.2019
31.07.2019
01.08.2019
02.08.2019
03.08.2019
04.08.2019
05.08.2019
06.08.2019
07.08.2019
08.08.2019
09.08.2019
10.08.2019
11.08.2019
12.08.2019
13.08.2019
14.08.2019
15.08.2019
16.08.2019
17.08.2019
18.08.2019
19.08.2019
20.08.2019
21.08.2019
22.08.2019
23.08.2019
24.08.2019
25.08.2019
26.08.2019
27.08.2019
28.08.2019
29.08.2019
30.08.2019
31.08.2019
01.09.2019
02.09.2019
03.09.2019
04.09.2019
05.09.2019
06.09.2019
07.09.2019
08.09.2019
09.09.2019
10.09.2019
11.09.2019
12.09.2019
13.09.2019
14.09.2019
15.09.2019
16.09.2019
17.09.2019
18.09.2019
19.09.2019
20.09.2019
21.09.2019
22.09.2019
23.09.2019
24.09.2019
25.09.2019
26.09.2019
27.09.2019
28.09.2019
29.09.2019
30.09.2019
01.10.2019
02.10.2019
03.10.2019
04.10.2019
05.10.2019
06.10.2019
07.10.2019
08.10.2019
09.10.2019
10.10.2019
11.10.2019
12.10.2019
13.10.2019
14.10.2019
15.10.2019
16.10.2019
17.10.2019
18.10.2019
19.10.2019
20.10.2019
21.10.2019
22.10.2019
23.10.2019
24.10.2019
25.10.2019
26.10.2019
27.10.2019
28.10.2019
29.10.2019
30.10.2019
31.10.2019
01.11.2019
02.11.2019
03.11.2019
04.11.2019
05.11.2019
06.11.2019
07.11.2019
08.11.2019
09.11.2019
10.11.2019
11.11.2019
12.11.2019
13.11.2019
14.11.2019
15.11.2019
16.11.2019
17.11.2019
18.11.2019
19.11.2019
20.11.2019
21.11.2019
22.11.2019
23.11.2019
24.11.2019
25.11.2019
26.11.2019
27.11.2019
28.11.2019
29.11.2019
30.11.2019
01.12.2019
02.12.2019
03.12.2019
04.12.2019
05.12.2019
06.12.2019
07.12.2019
08.12.2019
09.12.2019
10.12.2019
11.12.2019
12.12.2019
13.12.2019
14.12.2019
15.12.2019
16.12.2019
17.12.2019
18.12.2019
19.12.2019
20.12.2019
21.12.2019
22.12.2019
23.12.2019
24.12.2019
25.12.2019
26.12.2019
27.12.2019
28.12.2019
29.12.2019
30.12.2019
31.12.2019
--- Break, reached year 2020

Bei Bedarf kann ich den auch ohne Probleme von Jahr 00 bis 99 durch laufen lassen, kein Problem.

So langsam reißt selbst mir der Geduldsfaden. Mein Code funktioniert tadellos, wie zu sehen ist.
Aber ich bin ja Schuld. Wobei die neuste Version sogar ... Fehler abfängt wie ungültige Startdaten (hattest du schon). Naja, versuchs halt mit If's. Ich bin hier aus dem Thema raus, is ja eh alles falsch was ich sag...
mad.gif
 
Hallo LotadaC
Kommt drauf an...
es wird eine dezimale zwei, also 10binär an die Stelle von CS00 geschoben. Üblicherweise (aber nicht immer zwingend) steht "links" von CS00 CS01...
Wo kann sowas Sinn machen?
z.B. bei den Compare Output Modes.
Bei den konventionellen (bei den X-Cores mag das anders sein) AVR hast Du vier wählbare Output-Modes, die durch zwei Bits festgelegt werden.
Dabei steht das jeweilige COMnx1-Bit immer links vom COMnx0-Bit.
...

Du hast - was die "kleinen Käfer" und deren Programmierung angeht, weitaus mehr Ahnung als ich (je haben werde), keine Frage, und Deine Erklärungen sind immer total ausführlich und fundiert - einfach klasse :good3: .

Ich bin aber der Meinung, dass Heini-14 mit meiner Darstellung der Prescaler besser zurecht kommt. Eine kurze, prägnante Erläuterung ...

Ein Grundschüler wird keine Infinitesimalrechnung verstehen ;)

nichts für ungut

mfg

Hero_123
 
Also das setzt dem Ganzen jetzt aber die Krone auf...
grrrrrr.gif

Wundert mich nicht, sind ja auch diverse Fehler drin, in deiner Version.
Ich danke dir für deine bisherige Hilfe.
Wenn der Code in VB.NET tadellos funktioniert, heißt das nicht, dass es bei Bascom auch so sein muss. Z.B. die Case Anweisungen müssen einzeln aufgeführt werden. Dann können es manchmal auch ganz simple Fehler sein, auf die ich selbst nicht komme, und dann bei verschiedenen Versuchenden ganzen Code durcheinander haue.
Aber ich muss mich hier nicht runter machen lassen. Ich danke nochmals für Deine Hilfe.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)