Re: 如果要將副程式分開放在各別檔案時,該怎麼分配?
|
||||
---|---|---|---|---|
版主
|
這裡有一些類似的PAGE設定與PC跳去執行的問題討論,
http://www.microchip.com.tw/modules/n ... php?topic_id=2480&forum=7 基本上要注意PAGE的間格問題,可以用強定位址的方式來解決這個問題。 ORG 0x1000 或 Section _Name CODE 0X1000
發表於: 2006/6/26 13:36
|
|||
|
Re: 如果要將副程式分開放在各別檔案時,該怎麼分配?
|
||||
---|---|---|---|---|
版主
|
1. 使用 Include 將原始程式加入的方式還是屬於 Absolute 的語法,它無須使用到Linker來排位址,所以用此方式是不太適合寫較大的程式,也不符合程式模組化的要求,如果要達到各個程式模組的獨立性是要考慮採用Relocatable語法來寫程式,透過Linker來安排程式及變數的位址。
2. 你的問題說起來還真的有點長,PIC16 和 PIC18 有不同的方式,Hi-Tech PICC 和 C18 的寫法也不一樣,組合起來就有四種最好還是打的電話到技術服務專線吧 ! 0800-717-718 3. 一般如果使用PIC18F 我們會將Global variable及中斷副程式所使用到的變數等宣告在 Access Bank, PIC16F87x則宣告在 Share Bank 裡,以PIC16Fxxx為例: 程式之間要使用到的共用變數(RAM)最好統一宣告在 BANK0,其它程式再用 Extern 去接收這個由別人宣告過的變數,不管這些 Global 變數被LINKER排定到那個位址,有使用的這些Global變數的模組程式最好都加入Banksel這個指令來做BANK的自動切換,這樣是比較不容易出錯的。
發表於: 2006/6/20 10:57
|
|||
|
如果要將副程式分開放在各別檔案時,該怎麼分配?
|
||||
---|---|---|---|---|
初級會員
|
假如我想把副程式一個一個寫好各別放在其檔案中,除了主檔要去INCLUDE加入他之外,對於記憶體使用的分配,須注意到要如何分配呢?
是否也要將記憶體分配一併寫入子程式裡,如果是的話,假設別的不相干的案子要共同使用這些子程式的話,不就要很注意記憶體的分配才能使用它了? 難道不能自動分配,以免GOTO或CALL或者是有用到PCL時以免它跳錯,而且子程式與子程式也不會位址相衝突?
發表於: 2006/6/19 2:22
|
|||
|