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
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
> 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. ...
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.
Vielen Dank für Eure Antworten - ich werde das mal ausprobieren... Viele Grüße Holger
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.