Re: 使用HI TECH PICC時,記憶體位置會被編譯器重複分配
|
||||
---|---|---|---|---|
版主
|
應該不用管陣列的位址在哪裡吧! Watch Windos 連 STRUCT & UNION 都可以看的到了,怎麼會看不到陣列呢? 直接將陣列名稱用Mouse托到Watch Window 就可以看到了。
發表於: 2007/8/8 17:44
|
|||
|
Re: 使用HI TECH PICC時,記憶體位置會被編譯器重複分配
|
||||
---|---|---|---|---|
版主
|
Hi-Tech PICC 強制定位 @ 使用,Linker 不會管你已經使用@來指定位址了仍舊會安排變數到這個位址。
比較好的作法是可以將陣列安排到單獨的一個BANK裡,一般變數又單獨在BANK0裡,這樣就不會混在一起了。 除了特定位址如周邊站存器需用 @ 來指定位址,一般變數及陣列還是透過 Linker 來配置,不要刻意的指定位址。
發表於: 2007/8/7 14:03
|
|||
|
使用HI TECH PICC時,記憶體位置會被編譯器重複分配
|
||||
---|---|---|---|---|
資深會員
|
版主以及各位程式高手您們好:
想請教大家一個問題,我用HI TECH PICC 8.05版來寫16F913, 在程式裡我有宣告一個陣列如下: bank1 volatile unsigned char Key[6] @ 0xb4; 以上是我宣告一個Key陣列放在bank1的從0xb4開始的6個Byte, 而當我在MPLAB的WATCH視窗中要觀察這個陣列的變化情形時, 發現陣列中有些Byte被指定成某個變數A的位址, 而變數A我同樣是宣告在bank1,但沒有宣告位址。 由於有共用記憶體位址,當程式執行當中就有破壞陣列內容的情形。 請問應該要如何防止編譯器重複分配位址? 因為如果每一個變數都用絕對定址的方式很不方便。 謝謝。
發表於: 2007/8/7 13:36
|
|||
|