PDA

View Full Version : Cleaning up code



Tobias
- 2nd December 2009, 00:50
Using a 16F877A one part of the code is the following. It uses up alot of code space. Is there an alternative?



Read_Data:
Read 0, Stage1tOn.LowByte
REad 1, Stage1TOn.HighByte
Read 2, Stage1tOFF.LowByte
REad 3, Stage1TOFF.HighByte
Read 4, Stage1ROn.LowByte
REad 5, Stage1RON.HighByte
Read 6, Stage1ROFF.LowByte
REad 7, Stage1ROFF.HighByte
Read 8, Stage2tOn.LowByte
REad 9, Stage2TOn.HighByte
Read 10, Stage2tOFF.LowByte
REad 11, Stage2TOFF.HighByte
Read 12, Stage2ROn.LowByte
REad 13, Stage2RON.HighByte
Read 14, Stage2ROFF.LowByte
REad 15, Stage2ROFF.HighByte
Read 16, Stage3tOn.LowByte
REad 17, Stage3TOn.HighByte
Read 18, Stage3tOFF.LowByte
REad 19, Stage3TOFF.HighByte
Read 20, Stage3ROn.LowByte
REad 21, Stage3RON.HighByte
Read 22, Stage3ROFF.LowByte
REad 23, Stage3ROFF.HighByte
Read 24, Stage4tOn.LowByte
REad 25, Stage4TOn.HighByte
Read 26, Stage4tOFF.LowByte
REad 27, Stage4TOFF.HighByte
Read 28, Stage4ROn.LowByte
REad 29, Stage4RON.HighByte
Read 30, Stage4ROFF.LowByte
REad 31, Stage4ROFF.HighByte
Read 32, Stage5tOn.LowByte
REad 33, Stage5TOn.HighByte
Read 34, Stage5tOFF.LowByte
REad 35, Stage5TOFF.HighByte
Read 36, Stage5ROn.LowByte
REad 37, Stage5RON.HighByte
Read 38, Stage5ROFF.LowByte
REad 39, Stage5ROFF.HighByte
Read 40, Stage6tOn.LowByte
REad 41, Stage6TOn.HighByte
Read 42, Stage6tOFF.LowByte
REad 43, Stage6TOFF.HighByte
Read 44, Stage6ROn.LowByte
REad 45, Stage6RON.HighByte
Read 46, Stage6ROFF.LowByte
REad 47, Stage6ROFF.HighByte
Read 48, Stage7tOn.LowByte
REad 49, Stage7TOn.HighByte
Read 50, Stage7tOFF.LowByte
REad 51, Stage7TOFF.HighByte
Read 52, Stage7ROn.LowByte
REad 53, Stage7RON.HighByte
Read 54, Stage7ROFF.LowByte
REad 55, Stage7ROFF.HighByte
Read 56, Stage8tOn.LowByte
REad 57, Stage8TOn.HighByte
Read 58, Stage8tOFF.LowByte
REad 59, Stage8TOFF.HighByte
Read 60, Stage8ROn.LowByte
REad 61, Stage8RON.HighByte
Read 62, Stage8ROFF.LowByte
REad 63, Stage8ROFF.HighByte
Read 64, Stage1Trig
Read 65, Stage2Trig
Read 66, Stage3Trig
Read 67, Stage4Trig
Read 68, Stage5Trig
Read 69, Stage6Trig
Read 70, Stage7Trig
Read 71, Stage8Trig
Read 72, StageReset1
Read 73, StageReset2
Read 74, StageReset3
Read 75, StageReset4
Read 76, StageReset5
Read 77, StageReset6
Read 78, StageReset7
Read 79, StageReset8
return

Jerson
- 2nd December 2009, 04:23
Since PBP does not allow structures(at least I'm not aware of such), we have to be a little creative. This is purely conceptual, UNTESTED code.



NoOfStructures: con 8 ' How many channels (1 struct per channel)
StructureSize: con 10 'each is a 10 bytes long structure
Ton: con 0 ; len 2b ; declare storage for a word
Toff: con 2 ; len 2b
Ron: con 4 ; len 2b
Roff: con 6 ; len 2b
Trigger: con 8 ; len 1b
Reset: con 9 ; len 1b

' clear out as many eeprom bytes as we need to save data
EEbase Data 0(NoOfStructures*StructureSize)

' This is where we bring out our structure to RAM
Information: var byte[StructureSize] ' space for 1 structure
Count: var byte ' temporary use counter
gr0: var byte ' 8channels*10bytes = 80 max
gr1: var byte

' Read the settings for channel gr0 from eeprom
GetSettings:
gr0 = gr0*SizeOfStructure
for count = 0 to StructureSize-1
Read gr0+count, Information+count
next
return

' Put the settings for channel gr0 back to eeprom
PutSettings:
gr0 = gr0*SizeOfStructure
for count = 0 to StructureSize-1
Write gr0+count, Information+count
next
return

' Accessing the elements of the structure
My_Ton = Information[Ton]
My_Toff = Information[Toff]
..... and so on

Tobias
- 2nd December 2009, 04:55
Thank you, I will give it a go tonite

sayzer
- 2nd December 2009, 07:14
Try this one, too.
This one uses 6 times less code and does the same thing.
Also, you can use the same variable names as they only refer to the array elements.




<font color="#000000">StagesX <font color="#000080"><b>VAR WORD</b></font>[<font color="#FF0000">32</font>]
StagesY <font color="#000080"><b>VAR BYTE</b></font>[<font color="#FF0000">16</font>]

Stage1tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">0</font>] <font color="#000080"><i>'EEprom location from 0 to 63.
</i></font>Stage1tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">1</font>]
Stage1ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">2</font>]
Stage1ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">3</font>]
Stage2tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">4</font>]
Stage2tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">5</font>]
Stage2ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">6</font>]
Stage2ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">7</font>]
Stage3tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">8</font>]
Stage3tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">9</font>]
Stage3ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">10</font>]
Stage3ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">11</font>]
Stage4tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">12</font>]
Stage4tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">13</font>]
Stage4ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">14</font>]
Stage4ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">15</font>]
Stage5tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">16</font>]
Stage5tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">17</font>]
Stage5ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">18</font>]
Stage5ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">19</font>]
Stage6tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">20</font>]
Stage6tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">21</font>]
Stage6ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">22</font>]
Stage6ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">23</font>]
Stage7tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">24</font>]
Stage7tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">25</font>]
Stage7ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">26</font>]
Stage7ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">27</font>]
Stage8tOn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">28</font>]
Stage8tOFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">29</font>]
Stage8ROn <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">30</font>]
Stage8ROFF <font color="#000080"><b>VAR </b></font>StagesX[<font color="#FF0000">31</font>]

Stage1Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">0</font>] <font color="#000080"><i>'EEprom location from 64 to 79.
</i></font>Stage2Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">1</font>]
Stage3Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">2</font>]
Stage4Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">3</font>]
Stage5Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">4</font>]
Stage6Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">5</font>]
Stage7Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">6</font>]
Stage8Trig <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">7</font>]
StageReset1 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">8</font>]
StageReset2 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">9</font>]
StageReset3 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">10</font>]
StageReset4 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">11</font>]
StageReset5 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">12</font>]
StageReset6 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">13</font>]
StageReset7 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">14</font>]
StageReset8 <font color="#000080"><b>VAR </b></font>StagesY[<font color="#FF0000">15</font>]

Index <font color="#000080"><b>VAR BYTE
</b></font>Index2 <font color="#000080"><b>VAR BYTE
</b></font>Temp <font color="#000080"><b>VAR WORD



</b></font>Read_Data:
Index2 = <font color="#FF0000">0
</font><font color="#000080"><b>FOR </b></font>Index = <font color="#FF0000">0 </font><font color="#000080"><b>TO </b></font><font color="#FF0000">62 </font><font color="#000080"><b>STEP </b></font><font color="#FF0000">2
</font><font color="#000080"><b>READ </b></font>Index,Temp.LowByte <font color="#000080"><i>' Word sized data. Index is the eeprom addr.
</i><b>READ </b></font>(Index+<font color="#FF0000">1</font>),Temp.HighByte
StagesX[Index2] = Temp <font color="#000080"><i>'Index2 is array adr.

</i><b>IF </b></font>Index2 &lt; <font color="#FF0000">16 </font><font color="#000080"><b>THEN READ </b></font>(Index2+<font color="#FF0000">64</font>),StagesY[Index2] <font color="#000080"><i>' Byte sized data.
</i></font>Index2 = Index2 + <font color="#FF0000">1 </font><font color="#000080"><i>' Max. 31.
</i><b>NEXT </b></font>Index

<font color="#000080"><b>RETURN







</b></font>