會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



« 1 (2)


Re: near 指令使用(Access Bank)
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14947
等級: 73; EXP: 74
HP : 1091 / 1818
MP : 4982 / 84127
離線
其實使用 C 來撰寫程式,除非是有特殊記憶體的使用,一般而言是不要管變數被安排在哪一個 RAM 位址。有關變數被安排在哪個 RAM Bank 程式執行時會自動切換,無須擔心會有錯誤。

不用太執著變數是否放在哪裡,除非像在使用中斷時的共用變數或函數之間用來傳資料的公用變數,這時為了不用做 Bank 的切換,這些共用變數是比較適合擺放在 Access Bank 的。

至於_Temp_Data 如何知道? 這就要看一下 C18 User's Guide 裡的中斷章節。在主程式因為正在做基本的數學運算時,剛好計算到一半時發生了中斷,而中斷函數也有使用基本數學的運算這時就會有變數被覆蓋的情形。C18 目前是使用中斷 Temp_Data 自動儲存的功能,所以不會影響。

注意一下,C 編譯器編譯後的程式也需要一些 RAM 的資源給 C 使用 (C 開始時會做一些起始的規劃),至於要使用多少 RAM 我也不知道。最好的方法是讓 Linker 自動安排。至於函數間的參數傳遞一般會使用到堆疊來傳遞的。除非在 Linker 的選項指定要使用 Static 方式做為參數的傳遞。

所謂 Static 方式,就是 Linker 會使用沒有用到的 RAM 區域來做參數的傳遞這樣可以節省程式執行的時間。

2月04日 11:55:08
轉換PDF檔 列印


Re: near 指令使用(Access Bank)
中級會員
註冊日期:
2012/07/10 09:35
所屬群組:
註冊會員
文章: 46
等級: 5; EXP: 59
HP : 0 / 114
MP : 15 / 2564
離線
版主Ryang您好

因為有接觸過組合語言安排變數位置撰寫的方式,所以才會執著於安排變數在Access Bank的部分,可以減少切換BANK的時間。

目前是將中斷內安排變數旗標,留給相關主程式輪詢判斷使用。這裡所說中斷內的變數旗標我安排在Access Bank,以及有些變數需要較頻繁的修改,我也刻意安排在Access Bank。

以及最後一行您所說的,在 Linker 的選項指定要使用 Static 方式做為參數的傳遞,是否也因此會佔用特定的RAM空間,與一般Static 的宣告是相同的功能?

謝謝

2月05日 20:35:35
轉換PDF檔 列印


Re: near 指令使用(Access Bank)
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14947
等級: 73; EXP: 74
HP : 1091 / 1818
MP : 4982 / 84127
離線
參數或暫時性變數的設定使用是 Static 的方式的話。那 Linker 會找出在本程式沒有使用到的 RAM 來做暫存區,因為程式沒有去使用這些區塊所以 compiler 就可以自由的使用這些區塊來傳遞參數。

Static 的參數傳遞比起標準的參數傳遞(透過堆疊方式) 的速度及效率來的高。

2月06日 13:50:59
轉換PDF檔 列印



« 1 (2)



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project