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

    Trouble with INDEX instruction


      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:


          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




      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