Re: 查表程式
|
||||
---|---|---|---|---|
高級會員
|
參照:
謝謝大家及版主的回覆... 受益良多...我會深記"跨頁"這兩個字的 真是高興,現在不用在那邊搬表移來移去了 感謝幫忙!
發表於: 2009/6/15 19:35
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
資深會員
|
參照:
收到 已確認 ! 以往都只有查小表 , 查大表 在以往論壇上都說是大麻煩 , 感謝 SHPENG 大大 的拋玉引玉 , 以後不管 新舊 CPU , 查大表 再也不會讓人頭痛了
發表於: 2009/6/15 15:53
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
版主
|
這種利用 PCL 的察表示屬於較早期的 PIC16Fxxx 的查表,較新的像PIC16F87x, 87xA & 16F88x 等較新的系列已經內建 EEPROM & Flash 直接存取用的暫存器。使用這些 EEADR & EEADRH 暫存器定位址,要查到哪裡都隨你高興。
發表於: 2009/6/15 15:06
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
資深會員
|
參照:
感謝無私提供 , 謝謝 ....... 如果 程式空間夠大 ( 不同 CPU ) 應該不只 8K..... 如果真的是 大表 的話 , 還是乖乖的將各分表 表頭放在 0X00 才不會自找麻煩 又省事 反正 PCL 一改變 , PCLATH 自動 LOAD , 表有多大 就查多大 +++++ 一個疑問 , 如果查表的 PCL 恰恰與下一個指令的 PCL 值 同樣 , 會不會讓 CPU 以為 PCL 沒變化 而沒跳到查表程式 ????? . 還是 只要有 ADDWF PCL , F ; MOVWF PCL 就一定會 RELOAD PCLATH , ; MOVF PCL , F ;____ ??
發表於: 2009/6/15 14:49
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
資深會員
|
參照:
所以 需搭配 PCLATH 做進位處理,可以查 8K大表 http://www.piclist.com/techref/microchip/bigtable.htm
發表於: 2009/6/15 13:11
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
版主
|
參照:
好方法,謝謝。
發表於: 2009/6/15 13:10
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
版主
|
建議線看一下MPASM 的教育訓練 :
http://www.microchip.com.tw/modules/w ... nglefile.php?cid=4&lid=32 DT 是個 Marco 的指令,主要是用來定 PIC16F 的組語查表並配合 CALL & ADDWF PCL,F 的指令來使用。請先查一下 PCL只有到 8-bit 的長度,所以查表資料的最終長度為 255 且最後的位址不可跨過 0xFF ,因為 PCL 會歸零。
發表於: 2009/6/15 13:06
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
資深會員
|
參照:
PIC的表可以跨頁 movlw high (TABLE_START) movwf pclath movf index,w addlw TABLE_START skpnc incf pclath,f movwf pcl TABLE_START retlw ... 資料來源: http://www.piclist.com/techref/microchip/tables.htm
發表於: 2009/6/15 12:16
|
|||
|
Re: 查表程式
|
||||
---|---|---|---|---|
資深會員
|
PIC的表不能跨頁...
發表於: 2009/6/15 12:05
|
|||
|