- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 3 von 3

Thema: Umsetzung Bascom-Code in C

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.12.2006
    Beiträge
    109

    Umsetzung Bascom-Code in C

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo an alle hier im Forum!

    Bevor ich meine Frage stelle wünsche ich euch allen einen guten Rutsch und alles Gute für das kommende Jahr.

    Vor einiger Zeit hatte ich mir Bascom zugelegt und Dank der Hilfe hier ein kleines Programm hinbekommen, um mehrere DS18B20 auszulesen. Nun habe ich ein wenig gelesen und die Info gefunden, dass bei gleichem Programm der hex-Code aus C deutlich kleiner ist im Vergleich zu Bascom. Auch die Geschwindigkeit wäre besser. Was mich aber am meisten interessiert ist die Codelänge. Deshalb eine Frage.

    Kann mir jemand helfen wie man folgenden Code von Bascom in C überführt?

    Hier der Bascomcode:
    Code:
    $regfile = "m168def.dat"
    $crystal = 4000000                                          '3686400
    $hwstack = 46
    $swstack = 40
    $framesize = 40
    
    '**************************Funktionen LCD-Display*******************************
    Config Lcd = 40 * 4
    Config Lcdpin = Pin , Rs = Portb.0 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , E2 = Portd.7
    Config Lcdbus = 4
    Config Lcdmode = Port
    
    Dim ___lcdno As Byte
    
    ___lcdno = 0
     Initlcd
     Cursor Off
     Cls
    
    ___lcdno = 1
    Initlcd
    Cursor Off
    Cls
    '**************************Def. allgemeiner Variabeln***************************
    
    $baud = 19200
    
    Match_rom Alias &H55
    Skip_rom Alias &HCC
    Read_scratchpad Alias &HBE
    Write_scratchpad Alias &H4E
    Copy_scratchpad Alias &H48
    Start_conversion Alias &H44
    
    ' Pin für 1wire Schnittstelle festlegen. => DS1820 am Port C.1
    Config 1wire = Portc.1
    Dim Ds1820id(32) As Byte
    Dim Sc(9) As Byte                                           '????
    Dim T As Integer
    Dim I As Byte
    Dim Id As Byte
    Dim T_mess As Single
    Dim Spalte As Byte
    
    
    'Die Adresse aller meiner DS1820 die ich vorher ausgelesen habe:
    Restore Sensor_ids
    For I = 1 To 32
       Read Ds1820id(i)
    Next I
    1wreset
    1wwrite Skip_rom
    1wwrite Start_conversion                                    'Alle angeschlossenen DS18B20 zum Messen veranlassen
    Waitms 500
    
                                                  'Ausgabe alle 0,5 Sekunden
    Do
     ___lcdno = 0
     Locate 1 , 1 : Lcd "Zeile 1"
     'Locate 2 , 1 : Lcd "Zeile 2"
    
       For Id = 1 To 25 Step 8                                  'ID für alle 4 DS1820 1,9,17,25
    
          1wreset                                               '1Wire Reseten
          1wwrite &H55                                          'MATCHROM=>Adress.den DS1820 anhand des ROM Inhaltes
          1wwrite Ds1820id(id) , 8                              '8 Byte ID wird uebertragen
          1wwrite &HBE                                          'READ SCATCHPAD => Liest alle Bytes des SP Memorys
          Sc(1) = 1wread(9)
          T = Sc(1)
          T = Makeint(sc(1) , Sc(2))                            'komprimiert zwei Bytes in die Integervariable T
          T_mess = T / 16                                       'Die Nachkommastelle entfernen
          'Locate I , 11
          Spalte = I * 6
          Spalte = Spalte + 1
          ___lcdno = 0
          'Locate 1 , 1 : Lcd "  Inn Auss Kess Vorl Rück "
          Locate 2 , Spalte                                     'Temperatur in Grad ausgeben
          Lcd Fusing(t_mess , "#.#" )
            Incr I
       Next Id
       I = 0
       Spalte = 0
       1wreset
       1wwrite Skip_rom
       1wwrite Start_conversion                                 'Alle angeschlossenen DS1820 zum Messen veranlassen
       Waitms 2000
     '  Cls                                                      'Ausgabe alle 0,5 Sekunden
    Loop
    
    End
    
    Sensor_ids:
    
    Data &H28 , &H25 , &H67 , &HAA , &H03 , &H00 , &H00 , &H55
    Data &H28 , &HA2 , &H75 , &HAA , &H03 , &H00 , &H00 , &HC5
    Data &H28 , &HA7 , &H64 , &HAA , &H03 , &H00 , &H00 , &H9F
    Data &H28 , &HE6 , &H63 , &HAA , &H03 , &H00 , &H00 , &H8C
    'Data &H10 , &HE8 , &HF4 , &H23 , &H01 , &H08 , &H00 , &HEF  '
    Danke schon einmal für die Hilfe
    Martin

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    ..., dass bei gleichem Programm der hex-Code aus C deutlich kleiner ist im Vergleich zu Bascom. Auch die Geschwindigkeit wäre besser.
    Ich glaube nicht, dass man das so pauschal sagen kann. Außerdem glaube ich, dass der Gewinn in keinem Verhältniss zum Aufwand stehen wird. Du verwendest fast nur vorgefertigte "Bausteine" von Bascom als da sind LCD, USART, 1Wire. Das kennt C gar nicht und muss über geeignete Funktionen oder Libraries erst importiert werden.

    Wenn der Code mit Bascom wirklich zu groß werden sollte kannst du dir immer noch Gedanken darüber machen. Geschwindigkeitsmässig scheint es unnötig solange da noch Warteschleifen im Sekundenbereich eingebaut sind.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.12.2006
    Beiträge
    109
    Vielen Dank für deine Antwort.

    Die Info über Codelänge und Geschwindigkeit hatte ich irgendwo bei RN gefunden.

    Da 1wire sowie eine LCD-Ausgabe ja alltägliche Funktionen (für mich zwar nicht) sind, hatte ich gehofft, dass es hierfür schon include-dateien gibt, die man einbinden kann.

    Grüße
    martin

Ähnliche Themen

  1. C-Code in Bascom umschreiben
    Von bnitram im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 22.12.2011, 20:48
  2. Bascom Code in GCC Code umschreiben
    Von Martin. im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 13.07.2008, 19:14
  3. asm-code-einblick vom bascom-code
    Von roboterheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 16.10.2007, 06:39
  4. Bascom - Code vereinfachen
    Von Dennis2006 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 27.01.2007, 08:46
  5. BasCom Code
    Von PicNick im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.05.2005, 18:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad