Array error in Hserin


Closed Thread
Results 1 to 22 of 22

Hybrid View

  1. #1
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    Yes I noticed that. Still no such reduction.

    Most compact code was obtained with the crude

    word_temp.byte0=adresl
    word_temp.byte1=adresh
    array[i]=word_temp

    Now that I think about it, it is just two transfer. So makes sense, doesn't it?

    Ioannis
    Last edited by Ioannis; - 29th January 2020 at 09:09.

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,705


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    not much on today so i tried a few options with pic16f877 and 16f1825 with no other complications code wise
    resultant code sizes are commented


    Code:
    array var word[2]
    ADRESLO VAR BYTE
    inx var byte
    ADRESHi VAR BYTE
    
    
    ;METHOD 0
    word_temp  var word   
    
    
    ;METHODS 2 AND 3
    array_asbyte var byte ext
    @array_asbyte=_array
    
    
    
    
    ;ALL METHODS EXCEPT 0 , 1
    i    var byte
    i=0
    ;METHOD 4
    @ MOVE?CW _array , FSR0L    ;  PIC16 ENH CORE
    ;METHOD 5
    '@ MOVE?CW _array , FSR     ;  PIC16 SHITTY OLD CHIP
    
    
    for  inx=0 to 3       ;1 FOR METHOD 0        ;                        36  WORDS
    '    word_temp.byte0=adreslo         ;METHOD 0
    '    word_temp.byte1=adreshi
    '    array[inx]=word_temp   
    
    
     
    '    array[inx]=(adreshi<<8)| adreslo    ;METHOD 1  ;                52   WORDS
    
    
    '    if !i&1 then                       ;METHOD 2    ;               60   WORDS
    '        array_asbyte[i]=ADRESLO
    '    else
    '        array_asbyte[i]=ADRESHi
    '    endif
    '    i=1+1
    
    
        
    '    array_asbyte[i]=ADRESLO          ;METHOD 3   ;                  34   WORDS
    '    i=1+1
    '    array_asbyte[i]=ADRESHi
    '    i=1+1
        
    
    
    
    
    asm                                   ;METHOD 4 PIC16 ENH CORE;      23   WORDS
      MOVE?BA _ADRESLO
      MOVWI FSR0++
      MOVE?BA _ADRESHi
      MOVWI FSR0++
    ENDASM
     
    'asm                               ;METHOD 5 PIC16 SHITTY OLD CHIP;  29   WORDS
    '  MOVE?BA _ADRESLO
    '  MOVWF INDF
    '  INCF FSR,F
    '  MOVE?BA _ADRESHi  
    '  MOVWF INDF
    '  INCF FSR,F
    'ENDASM
     
    
    
     
    next
    
    
    stop
    Warning I'm not a teacher

  3. #3
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    Wow! Thanks for the extensive test.

    I suppose i=1+1 should be i=i+1, but does not matter in this test.

    The MOVE?BA _ADRESLO are macros I guess, but where can I find documentation how to use that stuff?

    Ioannis

  4. #4
    Join Date
    May 2013
    Location
    australia
    Posts
    2,705


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    I suppose i=1+1 should be i=i+1, but does not matter in this test.
    might need glasses




    where can I find documentation how to use that stuff?
    there is none i know of but its pretty simple
    A = wreg
    B= byte
    C= constant
    L= label
    W=word
    S= string
    the same as USERCOMMAND
    so
    MOVE?BA _ADRESLO
    is move byte @ ADRESLO to wreg

    it saves all that banksel typing

    ie
    asm
    banksel _ADRESLO
    movf _ADRESLO,w
    banksel whatever is next

    Warning I'm not a teacher

  5. #5
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    Thanks Richard.

    Well this makes things more clear. Once I remember doing things in ASM, the banklsel was a pain...

    Ioannis

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    Received from Charles this very interesting (and I suppose undocumented) tip:

    array.highbyte[i << 1]=adresh
    array.lowbyte[i << 1]=adresl

    OR

    array.highbyte[i * 2]=adresh
    array.lowbyte[i * 2]=adresl

    instead of

    array.highbyte[i]=adresh
    array.lowbyte[i]=adresl

    Really interesting!
    Ioannis

  7. #7
    Join Date
    Apr 2014
    Location
    OK
    Posts
    557


    Did you find this post helpful? Yes | No

    Default Re: Array error in Hserin

    Another PBP trick when mixing with ASM is to declare your variables with the addendum SYSTEM:

    Code:
    Variable VAR BYTE
    @MOVF _Variable, W
    ...becomes:
    Code:
    Variable VAR BYTE SYSTEM
    @MOVF Variable, W

Similar Threads

  1. Hserin with Array
    By JKaiser in forum Serial
    Replies: 4
    Last Post: - 11th December 2014, 20:13
  2. Hserin Array Question
    By Hylan in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 9th May 2012, 03:39
  3. Error - Fatal Out Of Memory ( With Array)
    By stormdacta in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 26th August 2007, 15:36
  4. Bit/Byte array for Hserin/Hserout
    By mrx23 in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 2nd September 2006, 00:07
  5. HSERIN Error
    By eoasap in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 13th January 2006, 04:30

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