• slider image 514
  • slider image 516
  • slider image 517
  • slider image 518
  • slider image 519
:::


Browsing this Thread:   2 Anonymous Users






Re: MACRO的使用問題
#7
資深會員
資深會員


查看用戶資訊
Data sheet裡
搜尋關鍵字access bank

你都曉得教別人 ACCESS , 為何自己還犯這種錯誤 ??
<<< 自己去罰站 >>>

組譯程式擁有對程式的解釋權 , 所以如果觀念錯誤就會變成 雞同鴨講
( 程式是給組譯程式看的, 再由它和 LINKER 轉成可執行檔 <.HEX> )

發表於: 2009/10/30 13:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: MACRO的使用問題
#6
資深會員
資深會員


查看用戶資訊


#include P18F8520.inc
    
udata 0x60
Out0 res 1 
temp0 res 1
temp1 res 1
    ORG 0
Start 
    banksel Out0
    clrf temp0    
    clrf temp1
    clrf Out0    
    movlw Out0    
[color=990000]; MOVLW 只能接受 數字 故傳入 out0 的 ADDRESS [/color]
    
movwf Out0     Out0 0x60 [color=990000] ; MOVWF 只能輸出至 暫存器 故 OUT0 = ( OUT0 的 ADDRESS ) [/color]
                            ; ( 
像 C 的 POINTER 變數 )
    
banksel FSR0    此行 應 省略
    movwf FSR0     
movwf FSR0 A  不管在 那個 BANK 都可存取 系統暫存器  ( ,)

    
clrf INDF0 清除INDF0    不管在 那個 BANK 都可存取 系統暫存器  ( ,)
    
incf Out0,Out0 加 1    此時已在  FSR0 的BANK 可能與 OUT0 不同 BANK
                
故 不一定可以存取 OUT0 

    movff INDF0
temp0 INDF0 0x00    因 FSR0 未改 INDF0 指向 錯誤地方
    movff Out0
temp1 Out0 0x61

    
goto $ 
    
END

;


發表於: 2009/10/30 10:48
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: MACRO的使用問題
#5
新會員
新會員


查看用戶資訊
原來如此
大感謝Beee!!!
執行之後結果變成:
temp0=0x00
temp1=0x00
而不是
temp0=0x01
temp1=0x01
想請問是不是一旦該暫存器(Out0)的位址存入FSR0之中,只有對INDF0的值作變動才能改變暫存器(Out0)的值,而此時直接對暫存器(Out0)作任何變值的動作都不會使得其內部的值改變。

謝謝~

發表於: 2009/10/28 13:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: MACRO的使用問題
#4
資深會員
資深會員


查看用戶資訊
1. 我熟的是 pic16 不是 pic18  我習慣寫絕對位址 不是相對位址 
    2.  謝謝你讓我對 相對位址 開始不再恐懼 
    3 
.  你還不懂我的意思 ,  fsr0 為 16 bit  不能用  movwf  改 
             ----->  
MOVWF   FSR0L

發表於: 2009/10/28 12:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: MACRO的使用問題
#3
新會員
新會員


查看用戶資訊
感謝Beee的回應。
我做了以下的code測試
#include P18F8520.inc
udata 0x60
Out0 res 1
temp0 res 1
temp1 res 1
ORG 0
Start
banksel Out0
clrf temp0
clrf temp1
clrf Out0
movlw Out0
movwf Out0 ; Out0 = 0x60
banksel FSR0
movwf FSR0

clrf INDF0 ; 清除INDF0
incf Out0,F ; Out0 加 1

movff INDF0, temp0 ; INDF0 = 0x00
movff Out0, temp1 ; Out0 = 0x61

goto $
END

執行完之後
temp0=0x00
temp1=0x61

但是根據data sheet,對INDF0的值作任何改變,等於對FSR0所存位址之對應暫存器作改變。
那麼temp0的值和temp1的值應該會相等都等於0x01才對,
為啥我跑出來的結果會不一樣

煩請有經驗的前輩指導一下

謝謝

發表於: 2009/10/28 11:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: MACRO的使用問題
#2
資深會員
資深會員


查看用戶資訊
參照:

u901833 寫道:
大家好
我根據MPASM user's guide 中有關於macro language的example,由pic16f轉為用pic18f作了些修改之後,build all執行完都很正常,不過在用watch視窗觀察我設的4個symbol(Out0~Out3),發現裡面的值並沒有根據程式而被改變,請問一下是什麼問題,謝謝。

#include P18F8520.inc
udata 0x60
Out0 res 1 ; LSB
Out1 res 1 ; :
Out2 res 1 ; :
Out3 res 1 ; MSB

Unpack32 MACRO Var, Address
BANKSEL Address
movlw Address
movwf FSR0
movlw Var & H'FF'
movwf INDF0
movlw Var >>D'08' & H'FF'
incf FSR0,F
movwf INDF0
movlw Var >>D'16' & H'FF'
incf FSR0,F
movwf INDF0
movlw Var >>D'24' & H'FF'
incf FSR0,F
movwf INDF0
ENDM

ORG 0
Start
Unpack32 0x12345678, Out0
goto $
END

WHAT   ?     自己想吧
  16 bit     
or  8 bit   ????

發表於: 2009/10/28 4:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


MACRO的使用問題
#1
新會員
新會員


查看用戶資訊
大家好
我根據MPASM user's guide 中有關於macro language的example,由pic16f轉為用pic18f作了些修改之後,build all執行完都很正常,不過在用watch視窗觀察我設的4個symbol(Out0~Out3),發現裡面的值並沒有根據程式而被改變,請問一下是什麼問題,謝謝。

#include P18F8520.inc
udata 0x60
Out0 res 1 ; LSB
Out1 res 1 ; :
Out2 res 1 ; :
Out3 res 1 ; MSB

Unpack32 MACRO Var, Address
BANKSEL Address
movlw Address
movwf FSR0
movlw Var & H'FF'
movwf INDF0
movlw Var >>D'08' & H'FF'
incf FSR0,F
movwf INDF0
movlw Var >>D'16' & H'FF'
incf FSR0,F
movwf INDF0
movlw Var >>D'24' & H'FF'
incf FSR0,F
movwf INDF0
ENDM

ORG 0
Start
Unpack32 0x12345678, Out0
goto $
END

發表於: 2009/10/27 20:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------