1 Reply Latest reply on Apr 22, 2016 10:00 AM by user_9986863

    Trouble with INDEX instruction

    user_9986863

      Hello everyone.

         

      I´m having troubles accessing a table with INDEX instruction.

         

      The device i´m using is CY8C29466.

         

      The table is 128 entries long and is feeding a 16 bit timer.

         

      Previously i had a precomputed table divided in MSB and LSB working just fine. Then i decided  trying a table computed at compile  time,

         

      like this:

         

      ProcFreq:
          mov    A,[RecByte]
          asl    A
          push    A
          index    Number
          mov    [period],A
          pop    A
          index    (Number+1)
          ;period+1 already in A
          move    X,[period]
          lcall    Timer16_1_WritePeriod
          ret

         

      Number:

         

      DW (Main_Freq/256)/x
      DW (Main_Freq/256)/x
      DW (Main_Freq/256)/x
      DW (Main_Freq/256)/x
      ....
      ....
      ....
      DW (Main_Freq/256)/x     ;128 times

         

      The code above is working partially, when i reach a value of 93 or 0x5D in the table it jumps to nowhere and never get back!

         

      I have some cuestions on this:

         

      1. What is wrong in the code above, of course.

         

      2. Why in the life i need to put "asl   A"  to acces the table? If i don´t use ASL i get messed values.

         

      Thanks in advance