Cleaning up code


Closed Thread
Results 1 to 4 of 4
  1. #1

    Default Cleaning up code

    Using a 16F877A one part of the code is the following. It uses up alot of code space. Is there an alternative?

    Code:
    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

  2. #2
    Join Date
    Nov 2005
    Location
    Bombay, India
    Posts
    947


    Did you find this post helpful? Yes | No

    Default

    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.

    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

  3. #3


    Did you find this post helpful? Yes | No

    Default

    Thank you, I will give it a go tonite

  4. #4
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    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.



    Code:
    <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>
    Last edited by sayzer; - 2nd December 2009 at 08:17. Reason: typo
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

Similar Threads

  1. Reading in Manchester code
    By brid0030 in forum Code Examples
    Replies: 0
    Last Post: - 10th March 2009, 22:55
  2. How much code space do PBP statements use.
    By Darrel Taylor in forum Code Examples
    Replies: 5
    Last Post: - 13th February 2009, 22:31
  3. Loop with two motor and 2 sensors
    By MrRoboto in forum mel PIC BASIC
    Replies: 4
    Last Post: - 9th December 2008, 00:40
  4. Making Program Code Space your playground...
    By Melanie in forum Code Examples
    Replies: 15
    Last Post: - 19th July 2008, 09:26
  5. Re-Writing IF-THEN-AND-ENDIF code?
    By jessey in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 18th August 2006, 18:23

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts