Optimierung Bascom Code

OP #1249448
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
Angehängte Dateien:
#1249456
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
Gast #1249476
Lesenswert?
• ▲
▼
> beim Return in einem Absturz enden...

Stimmt...

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

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

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

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

...
#1249486
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.