mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Optimierung Bascom Code


Autor: Holger B. (holgerbri)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nachdem ich die verschiedenen Code-Teile erfolgreich an einem Tiny2313 
erfolgreich getestet habe, sind da zwei Byte (!!!) zuviel drin :(. Ich 
habe den Code mal angehängt

Auf eine Funktion wollte ich eigentlich nicht verzichten und eigentlich 
sogar eher noch was Reserve haben. Vermutlich würde das mit Assembler 
etwas schlanker sein, aber ich möchte schon bei Bascom bleben. Habt Ihr 
für mich Newbie ein paar Tipps, wo ich noch sparen kann?

Im schlimmsten Fall müsste ich auf den Tiny48 umsteigen, aber ich 
brauche gar nicht so viele PINS und das Ganze soll auch möglichst klein 
bleiben...

Viele Grüße
  Holger

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Bascom scheint irgendwie sonderbar zu sein...

In jeder anderen Sprache würde ein

  ' Hauptprogramm

Offset = 8
Count = 0
Goto Init_all

...

Init_all:
  Disable Interrupts
  Neustart = 0
  Geschw = &H7FFF
  Wait 15
  Ds1820 = Readds1820()
  Temp_feel = Ds1820 - offset
  If Temp_feel < Maxt Then
    Temp_ref = Maxt
    Goto Vorwaerm
  End If
  Enable Interrupts
Return

beim Return in einem Absturz enden...

Gruß aus Berlin
Michael

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> beim Return in einem Absturz enden...

Stimmt...

Vielleicht sind das je die beiden Bytes, die zuviel sind... ;-)

Zum Einsparen der zwei Bytes:
Ddrb = &B0001_1111
Set Portb.0
Set Portb.1
Set Portb.2
Set Portb.3
Set Portb.4

lässt sich durch
Ddrb = &B00011111
Portb = &B00011111

ersetzen, was schon mal ein paar Bytes spart. Das gesamte Programm habe 
ich mangels Kommentare nicht weiter analysiert.

...

Autor: Torsten F. (tnetwork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuche weniger funktionen und gotos zu benutzen. Grade, wenn du sie 
nur an einer(evtl 2) stelle nutzt, bläht es den code auf und macht ihn 
schlechter lesbar.
du verwendest "vorwaerm" nur einmal->schreibe es direkt an der stelle wo 
du es brauchst anstatt diese goto springerei.

Vom ds1820 liest du 16 bytes benutzt aber nur die ersten beiden bytes 
als integer.

versuche port-Register in einem Rutsch zu definieren

Constanten könntest du auch  im eeprom statt im flash ablegen.

Autor: Holger B. (holgerbri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Eure Antworten - ich werde das mal ausprobieren...

Viele Grüße
  Holger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.