A question for the Macro experts....


Results 1 to 17 of 17

Threaded View

  1. #17
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    If you want to shrink your code, the best way is to see if you can use the internal ressource instead of the PBP pre-made function.

    By example, instead of using ADCIN, write/read directly to the register, same for HSEROUT, HSERIN and how much others.

    For a simple HSEROUT
    Code:
    DEFINE LOADER_USED 1
    DEFINE OSC 20
    RCSTA =$90
    TXSTA =$24
    SPBRG= 129 ' 9600 Bauds
    
    aVar    var BYTE[7]
    a       var byte
    
    avar[0]="H"
    avar[1]="E"
    avar[2]="L"
    avar[3]="L"
    avar[4]="O"
    AVAR[5]=13
    AVAR[6]=10
    A=0
    start:
        REPEAT
            TXREG=AVAR[A]
            NotEmpty: if TXSTA.1=0 then notempty
            A=A+1
            UNTIL A=7
            A=0
            PAUSE 500  
          goto start
    compile 89 words

    Code:
    DEFINE LOADER_USED 1
    DEFINE OSC 20
    RCSTA =$90
    TXSTA =$24
    SPBRG= 129 ' 9600 Bauds
    
    aVar    var BYTE[7]
    
    avar[0]="H"
    avar[1]="E"
    avar[2]="L"
    avar[3]="L"
    avar[4]="O"
    AVAR[5]=13
    AVAR[6]=10
    
    start:
        HSEROUT[STR AVAR]
        PAUSE 500  
        goto start
    compile 103 words.

    Code:
    DEFINE LOADER_USED 1
    DEFINE OSC 20
    DEFINE HSER_RCSTA 90h
    DEFINE HSER_TXSTA 24h
    DEFINE HSER_SPBRG 129 ' 9600 Bauds
    
    aVar    var BYTE[7]
    
    avar[0]="H"
    avar[1]="E"
    avar[2]="L"
    avar[3]="L"
    avar[4]="O"
    AVAR[5]=13
    AVAR[6]=10
    
    start:
        HSEROUT[STR AVAR]
        PAUSE 500  
        goto start
    almost the same as the previous but using PBP DEFINE HSER compile 95 words

    No big improvement so far... i should find a better example next time

    BTW it's always case by case. Scroll your program and look wich statement you call the most, do a SUB with them and TADA. Just be sure to avoid too much nested gosub and it should gives you good results.

    BUT there's always a midpoint between a readable code, and a tight one. Choose your own comfort zone and work with.
    Last edited by mister_e; - 30th August 2005 at 16:59.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

Similar Threads

  1. PBPro error "Macro USBINIT? not found in macro file"
    By Bonxy in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 4th October 2011, 09:06
  2. Replies: 6
    Last Post: - 4th November 2009, 13:36
  3. Really simple question for you experts :)
    By lew247 in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 4th June 2008, 01:43
  4. Please answer my first question
    By John_001 in forum Off Topic
    Replies: 1
    Last Post: - 15th September 2006, 06:49
  5. Passing an array as a macro argument?
    By forgie in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 5th September 2005, 17:09

Members who have read this thread : 0

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