Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
高級會員
|
昏倒...
RES 是假指令 .. 不能用在程式段... 真搞不董..你程式的邏輯...@@...
發表於: 2004/11/25 17:48
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
資深會員
|
用法不對!
會糾纏在這個問題是因為你們有些基本概念沒搞清楚,看完整文件比我來說清楚。像是有單一asm(不必link)與多asm(要link)兩種用法‧‧‧ 說最後一次: 拜託你們 讀講義! 有三份與 MPLAB IDE / MPASM 相關, 推薦先讀我打粗紅圈的那份 MPASM 一日講義。 說到沒力‧‧‧
發表於: 2004/11/25 15:09
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
資深會員
|
除了用equ直接定址可以在watch看到變數名稱外
其他方式好像都看不到 所以只能自己算算位址數 再輸入位址來看了 (好麻煩 ~>_<~)
發表於: 2004/11/25 13:12
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
高級會員
|
沒關係...
還有個問題... 我用WATCH看... 我找不到count這個變數... 是本來就找不到ㄇ?! 還是....???
發表於: 2004/11/25 12:54
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
資深會員
|
那我就不知道了
我以前這樣寫 用WATCH來看都正常
發表於: 2004/11/25 8:50
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
高級會員
|
Hi~~jubel!
你說"RES是根據上一行的位址依序排列" 我有隨便寫個小程式測試... 可好像沒有醬ㄋㄟ?! 下面是我經過編譯後的結果!
1: list p=18f252
發表於: 2004/11/24 20:15
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
資深會員
|
RES是保留變數位址
功能類似EQU 但EQU是直接定址,可以隨便你排,而且只能是8位元 而RES是根據上一行的位址依序排列,可以多位元組 假設AAA要放在0Ah,BBB要放在0Ch,都是8位元,則 AAA EQU 0Ah BBB EQU 0Ch 用RES的話 首先要先定義一個絕對位址(用CBLOCK好像也可以) AAA EQU 0Ah BBB RES 2 CCC RES 1 編譯後的結果是 8位元AAA在0Ah 16位元BBB在0Bh跟0Ch 8位元CCC在0Dh 建議你可以隨便寫一個小程式 然後用軟體模擬,看WATCH視窗來試
發表於: 2004/11/24 9:13
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
高級會員
|
聽你醬子分析...
好像用RES沒多大的意義.... 感覺上好像只是不用多花時間想一些Label名稱... 和不用考慮哪個位址已經被用走了... 我想我們一般程式所使用的變數應該不多... 應該不需要用到RES指令! 有點大材小用的感覺!!! 而且在想要的位址安排自己認為好記的名稱... 這樣寫起程式應該比較簡單點ㄅ!
發表於: 2004/11/23 22:02
|
|||
|
Re: 有關#define和RES?!
|
||||
---|---|---|---|---|
高級會員
|
不算是間接定址喔..
PIC沒有那麼強的定只能力,他只有直接定址的方式, 如果要作間接,只能用INDF配合FSR. 對編譯器來說..只是單純以Lalel取代成數值,然後在編譯成Hex ...怎麼說呢.?假設 LEDBUFFER 編譯器分配給他的位址是0x20 (0x21 , 0x22 沒有Lalel 但是編譯器會把該位址空出來,不安排給其他的Lalel) ex: .data LEDBUFFER RES 3 .code clrf LEDBUFFER clrf LEDBUFFER+1 clrf LEDBUFFER+2 以上述例子.假設LEDBUFFER 編譯器分配給他0x20 ..則實際的程式會變成 clrf 0x20 clrf 0x21 clrf 0x22 關於排列的方式我不太清楚,不過自己的使用經驗都是順序排下來的.
發表於: 2004/11/23 0:27
|
|||
|