Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück

AVR / Atmel

BASCOM Demo-Version und die 4k Begrenzung...

 von Naubaddi , 16.01.2020 12:17

Hallo erst mal,

da die Demoversion vom BASCOM-Compiler maximal 4k übersetzen kann und ich diesen Wert schon einmal überschritten hatte wurde kontinuierlich versucht das Programm zu schrumpfen, mein letzter Versuch war eine weitere Prozedur zu erstellen.
Da die Prozedur 4 Zeilen hat und dafür gerade mal 2 Zeilen eingespart wurden hatte ich mir nur ein paar Byte erhofft, das Ergebnis war verblüffend gut:

2 Zeilen weniger (0,8%) bei 248 Zeilen im Quelltext machen 606Byte weniger (24,5%) bei 2474Byte Programmcode aus der jetzt nur noch 1868Byte hat ! Soviel haben alle anderen Aktionen nicht erbracht, die Verschachtlung der Gosubs ist maximal 2 und sollte i.O. sein.

Grüßle, Naubaddi

Die alte Version:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
Gesicht:
A6a = A6 : A5a = A5 : M4a = M4 ' die alten Werte merken
M3 = M4 + 8 : M2 = M3 + 8 : M1 = M2 + 8
for Zeile = 1 to 8
Cs = 0 : Din = 0 : Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( A6 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( A5 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M4 , Mundarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M3 , Mundarten ) ' 8x8 Matrix 3
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M2 , Mundarten ) ' 8x8 Matrix 2
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M1 , Mundarten ) ' 8x8 Matrix 1 die Erste 8x8 Matrix seriel angeschloßen
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
incr A6 : incr A5 ' die nächste Zeile vom Auge
incr M4 : incr M3 : incr M2 : incr M1 ' die nächste Zeile vom Mund
Cs = 1 ' jetzt anzeigen
next Zeile
A6 = A6a : A5 = A5a : M4 = M4a ' auf die alten Werte zurück setzen
return
 



Die neue Version:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
Gesicht:
A6a = A6 : A5a = A5 : M4a = M4 ' die alten Werte merken
M3 = M4 + 8 : M2 = M3 + 8 : M1 = M2 + 8
for Zeile = 1 to 8
Cs = 0 : Din = 0 : Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( A6 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( A5 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( M4 , Mundarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( M3 , Mundarten ) ' 8x8 Matrix 3
gosub Send_max_Gesicht
Daten = lookup( M2 , Mundarten ) ' 8x8 Matrix 2
gosub Send_max_Gesicht
Daten = lookup( M1 , Mundarten ) ' 8x8 Matrix 1 die Erste 8x8 Matrix seriel angeschloßen
gosub Send_max_Gesicht
incr A6 : incr A5 ' die nächste Zeile vom Auge
incr M4 : incr M3 : incr M2 : incr M1 ' die nächste Zeile vom Mund
Cs = 1 ' jetzt anzeigen
next Zeile
A6 = A6a : A5 = A5a : M4 = M4a ' auf die alten Werte zurück setzen
return
Send_max_Gesicht:
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Return
 



Grüßle, Naubaddi


Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

Themen Überblick

Betreff Absender Datum
BASCOM Demo-Version und die 4k Begrenzung... Naubaddi 16.01.2020
RE: BASCOM Demo-Version und die 4k Begrenzung... Naubaddi 16.01.2020
RE: BASCOM Demo-Version und die 4k Begrenzung... BoomBoomMagic 16.01.2020
RE: BASCOM Demo-Version und die 4k Begrenzung... Naubaddi 16.01.2020
 

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz