Re: ~C18 問題, 陣列值傳給指標~
|
||||
---|---|---|---|---|
版主
|
因為先前post的程式只有一個資料列。
發表於: 2007/4/30 10:27
|
|||
|
Re: ~C18 問題, 陣列值傳給指標~
|
||||
---|---|---|---|---|
版主
|
參照:
const rom char *INITIAL_TABLE[INIT_NUM]={ 在陣列的宣告裡加上了一個 * 代表這是一個指標形態的陣列,INT_NUM 所代表的意義為有幾個陣列指標,其所指的位址為每個陣列指標的起始位址。一般的語法為:
#pragma romdata My_romdata
看你的程式只是要使用一般的陣列而已,將 * 拿掉看看。
發表於: 2007/4/30 9:55
|
|||
|
Re: ~C18 問題, 陣列值傳給指標~
|
||||
---|---|---|---|---|
資深會員
|
rom&ram混合碼會比較麻煩,原因可看disassemble code對照IC datasheet&compiler manual交互參考。解釋起來文字可以多到拿稿費了...PASS。
避免寫這種code,因為通常效率低落(如dspic用memory map解決了這個問題),如不可避免,應分開處理。你的答案應該是前項較合用。
發表於: 2007/4/29 19:37
|
|||
|
~C18 問題, 陣列值傳給指標~
|
||||
---|---|---|---|---|
高級會員
|
INITIAL_TABLE的值傳不到BUF, 程式如下:
謝謝大家的回答! #define INIT_NUM 22 #define EOT 0xFF #define SWRESET 0x01 const rom char INIT_SWRESET[]={ SWRESET,EOT }; const rom char *INITIAL_TABLE[INIT_NUM]={ INIT_SWRESET, . }; void OpenLCD(void) { unsigned char i; unsigned int Len; for (i=0;i<INIT_NUM;i++) { InitialLCD(INITIAL_TABLE[i]); } } void InitialLCD(const char *BUF) { unsigned char i,data; i=0; while( *(BUF+i) != EOT ) { data = *(BUF+i); i++; } }
發表於: 2007/4/27 18:12
|
|||
|