gnupic: Table Read on PIC16C77


Previous by date: 26 Sep 2000 12:01:28 -0000 Gpsim, Eamon Skelton
Next by date: 26 Sep 2000 12:01:28 -0000 Re: Table Read on PIC16C77, David Kelly
Previous in thread:
Next in thread: 26 Sep 2000 12:01:28 -0000 Re: Table Read on PIC16C77, David Kelly

Subject: Table Read on PIC16C77
From: Jerome Dumas ####@####.####
Date: 26 Sep 2000 12:01:28 -0000
Message-Id: <39D09E68.9D2794AD@atmel.fr>

Dear All,

I'm searching for a way to implement table read on PIC16C77 (8ko divided
on 4 pages)
the table I want to read can be located anywhere in my memory, its
length is 128 bytes
How to control page crossing ?
Here is what I have implemented :

a macro that allows to manage crossing page according to AN556
application note
from microchip. (at the end, I increment my offset by 1)

; ********************************************************************
CALL_TABLE_M   macro   table, offset

        movlw LOW table
        addwf offset, 1
        movlw HIGH table
        btfsc  STATUS, C
        addlw 1
        movwf PCLATH
        incf offset, 0
        call table
ENDM
; ********************************************************************
The problem I have is when I call the table with the folowing
instruction :

CALL_TABLE_M   mytable, 0x77

mytable starts at 0x0288, with an offset of 0x77
the data to be returned is located at 0x0300,
the macro from microchip returns another bad value located at 0x0200 !!!

Any help would be really apreciated !
Jerome


Here is my table :

; ********************************************************************
0288   0082           00001 mytable : movwf PCL      ;
                      00002
0289   3400           00003   retlw 0x00 ; ampl = 0
028A   3400           00004   retlw 0x00 ; ampl = 0
028B   3400           00005   retlw 0x00 ; ampl = 0
028C   3400           00006   retlw 0x00 ; ampl = 0
028D   3400           00007   retlw 0x00 ; ampl = 0
028E   3400           00008   retlw 0x00 ; ampl = 0
028F   3400           00009   retlw 0x00 ; ampl = 0
0290   3400           00010   retlw 0x00 ; ampl = 0
                      00011
0291   3400           00012   retlw 0x00 ; ampl = 1
0292   3400           00013   retlw 0x00 ; ampl = 1
0293   3400           00014   retlw 0x00 ; ampl = 1
0294   3401           00015   retlw 0x01 ; ampl = 1
0295   3401           00016   retlw 0x01 ; ampl = 1
0296   3401           00017   retlw 0x01 ; ampl = 1
0297   3401           00018   retlw 0x01 ; ampl = 1
0298   3401           00019   retlw 0x01 ; ampl = 1
                      00020
0299   3400           00021   retlw 0x00 ; ampl = 2
029A   3400           00022   retlw 0x00 ; ampl = 2
029B   3401           00023   retlw 0x01 ; ampl = 2
029C   3401           00024   retlw 0x01 ; ampl = 2
029D   3401           00025   retlw 0x01 ; ampl = 2
029E   3402           00026   retlw 0x02 ; ampl = 2
029F   3402           00027   retlw 0x02 ; ampl = 2
02A0   3402           00028   retlw 0x02 ; ampl = 2
                      00029
02A1   3400           00030   retlw 0x00 ; ampl = 3
02A2   3401           00031   retlw 0x01 ; ampl = 3
02A3   3401           00032   retlw 0x01 ; ampl = 3
02A4   3402           00033   retlw 0x02 ; ampl = 3
02A5   3402           00034   retlw 0x02 ; ampl = 3
02A6   3402           00035   retlw 0x02 ; ampl = 3
02A7   3403           00036   retlw 0x03 ; ampl = 3
02A8   3403           00037   retlw 0x03 ; ampl = 3
                      00038
02A9   3400           00039   retlw 0x00 ; ampl = 4
02AA   3401           00040   retlw 0x01 ; ampl = 4
02AB   3402           00041   retlw 0x02 ; ampl = 4
02AC   3402           00042   retlw 0x02 ; ampl = 4
02AD   3403           00043   retlw 0x03 ; ampl = 4
02AE   3403           00044   retlw 0x03 ; ampl = 4
02AF   3404           00045   retlw 0x04 ; ampl = 4
02B0   3404           00046   retlw 0x04 ; ampl = 4
                      00047
02B1   3400           00048   retlw 0x00 ; ampl = 5
02B2   3401           00049   retlw 0x01 ; ampl = 5
02B3   3402           00050   retlw 0x02 ; ampl = 5
02B4   3403           00051   retlw 0x03 ; ampl = 5
02B5   3404           00052   retlw 0x04 ; ampl = 5
02B6   3404           00053   retlw 0x04 ; ampl = 5
02B7   3405           00054   retlw 0x05 ; ampl = 5
02B8   3405           00055   retlw 0x05 ; ampl = 5
                      00056
02B9   3400           00057   retlw 0x00 ; ampl = 6
02BA   3401           00058   retlw 0x01 ; ampl = 6
02BB   3402           00059   retlw 0x02 ; ampl = 6
02BC   3403           00060   retlw 0x03 ; ampl = 6
02BD   3404           00061   retlw 0x04 ; ampl = 6
02BE   3405           00062   retlw 0x05 ; ampl = 6
02BF   3406           00063   retlw 0x06 ; ampl = 6
02C0   3406           00064   retlw 0x06 ; ampl = 6
                      00065
02C1   3400           00066   retlw 0x00 ; ampl = 7
02C2   3401           00067   retlw 0x01 ; ampl = 7
02C3   3403           00068   retlw 0x03 ; ampl = 7
02C4   3404           00069   retlw 0x04 ; ampl = 7
02C5   3405           00070   retlw 0x05 ; ampl = 7
02C6   3406           00071   retlw 0x06 ; ampl = 7
02C7   3406           00072   retlw 0x06 ; ampl = 7
02C8   3407           00073   retlw 0x07 ; ampl = 7
                      00074
02C9   3400           00075   retlw 0x00 ; ampl = 8
02CA   3402           00076   retlw 0x02 ; ampl = 8
02CB   3403           00077   retlw 0x03 ; ampl = 8
02CC   3404           00078   retlw 0x04 ; ampl = 8
02CD   3406           00079   retlw 0x06 ; ampl = 8
02CE   3407           00080   retlw 0x07 ; ampl = 8
02CF   3407           00081   retlw 0x07 ; ampl = 8
02D0   3408           00082   retlw 0x08 ; ampl = 8
                      00083
02D1   3400           00084   retlw 0x00 ; ampl = 9
02D2   3402           00085   retlw 0x02 ; ampl = 9
02D3   3403           00086   retlw 0x03 ; ampl = 9
02D4   3405           00087   retlw 0x05 ; ampl = 9
02D5   3406           00088   retlw 0x06 ; ampl = 9
02D6   3407           00089   retlw 0x07 ; ampl = 9
02D7   3408           00090   retlw 0x08 ; ampl = 9
02D8   3409           00091   retlw 0x09 ; ampl = 9
                      00092
02D9   3400           00093   retlw 0x00 ; ampl = 10
02DA   3402           00094   retlw 0x02 ; ampl = 10
02DB   3404           00095   retlw 0x04 ; ampl = 10
02DC   3406           00096   retlw 0x06 ; ampl = 10
02DD   3407           00097   retlw 0x07 ; ampl = 10
02DE   3408           00098   retlw 0x08 ; ampl = 10
02DF   3409           00099   retlw 0x09 ; ampl = 10
02E0   340A           00100   retlw 0x0A ; ampl = 10
                      00101
02E1   3400           00102   retlw 0x00 ; ampl = 11
02E2   3402           00103   retlw 0x02 ; ampl = 11
02E3   3404           00104   retlw 0x04 ; ampl = 11
02E4   3406           00105   retlw 0x06 ; ampl = 11
02E5   3408           00106   retlw 0x08 ; ampl = 11
02E6   3409           00107   retlw 0x09 ; ampl = 11
02E7   340A           00108   retlw 0x0A ; ampl = 11
02E8   340B           00109   retlw 0x0B ; ampl = 11
                      00110
02E9   3400           00111   retlw 0x00 ; ampl = 12
02EA   3402           00112   retlw 0x02 ; ampl = 12
02EB   3405           00113   retlw 0x05 ; ampl = 12
02EC   3407           00114   retlw 0x07 ; ampl = 12
02ED   3408           00115   retlw 0x08 ; ampl = 12
02EE   340A           00116   retlw 0x0A ; ampl = 12
02EF   340B           00117   retlw 0x0B ; ampl = 12
02F0   340C           00118   retlw 0x0C ; ampl = 12
                      00119
02F1   3400           00120   retlw 0x00 ; ampl = 13
02F2   3403           00121   retlw 0x03 ; ampl = 13
02F3   3405           00122   retlw 0x05 ; ampl = 13
02F4   3407           00123   retlw 0x07 ; ampl = 13
02F5   3409           00124   retlw 0x09 ; ampl = 13
02F6   340B           00125   retlw 0x0B ; ampl = 13
02F7   340C           00126   retlw 0x0C ; ampl = 13
02F8   340D           00127   retlw 0x0D ; ampl = 13
                      00128
02F9   3400           00129   retlw 0x00 ; ampl = 14
02FA   3403           00130   retlw 0x03 ; ampl = 14
02FB   3405           00131   retlw 0x05 ; ampl = 14
02FC   3408           00132   retlw 0x08 ; ampl = 14
02FD   340A           00133   retlw 0x0A ; ampl = 14
02FE   340C           00134   retlw 0x0C ; ampl = 14
02FF   340D           00135   retlw 0x0D ; ampl = 14
0300   340E           00136   retlw 0x0E ; ampl = 14      << NOT
RETURNED
                      00137
0301   3400           00138   retlw 0x00 ; ampl = 15
0302   3403           00139   retlw 0x03 ; ampl = 15
0303   3406           00140   retlw 0x06 ; ampl = 15
0304   3408           00141   retlw 0x08 ; ampl = 15
0305   340B           00142   retlw 0x0B ; ampl = 15
0306   340C           00143   retlw 0x0C ; ampl = 15
0307   340E           00144   retlw 0x0E ; ampl = 15
0308   340F           00145   retlw 0x0F ; ampl = 15









Previous by date: 26 Sep 2000 12:01:28 -0000 Gpsim, Eamon Skelton
Next by date: 26 Sep 2000 12:01:28 -0000 Re: Table Read on PIC16C77, David Kelly
Previous in thread:
Next in thread: 26 Sep 2000 12:01:28 -0000 Re: Table Read on PIC16C77, David Kelly


Powered by ezmlm-browse 0.20.