• slider image 442
  • slider image 492
  • slider image 493
  • slider image 494
  • slider image 495
  • slider image 496
:::


Browsing this Thread:   1 Anonymous Users






Re: C語言的語法,有關in_line_assembly的問題
#2
高級會員
高級會員


查看用戶資訊
在c18中使用in line assembly的方法去寫程式,如下
#include <p18f452.h>
void main(void)
{
while(1)
{
unsigned char abc=5;
unsigned char ccc[20];
unsigned char ddd=0;
_asm
movlw abc
movlb ccc
movlw ccc
movlb ddd
movlw ddd
movff abc,ddd
nop
_endasm
}
}
aaa的暫存器位址為401h
ccc為402h~415h
ddd為416h
可是執行movlw abc ====>wreg=0
movlb ccc=====>BSR=0
movlw ccc=====>wreg=1
movlb ddd=====>BSR=0
movlw ddd=====>wreg=15h
movff abc,ddd====>0x15h(記憶體位址)=5
請問要怎麼正確的在in_line_assembly中使用這些暫存器


發表於: 2007/2/2 15:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


C語言的語法,有關macro巨集
#1
高級會員
高級會員


查看用戶資訊
請問為什麼在我使用macro巨集時
例如我利用Swapf(f,dest,access),如下:
bcd_temp=BCD[i]&0x0f;
id[j++]=bcd_temp|0x30;
Swapf(bcd_temp,1,1);
bcd_temp=BCD[i]&0x0f;
id[j++]=bcd_temp|0x30;
bcd_temp 的位址為0425h
我本來是想將bcd_temp中的高低位址做交換,也就是說將0x425h中的內容值高低位址交換,但是當我執行到這個巨集時,實際交換的暫存器卻為0x007h。請問是什麼原因造成這個問題呢?
我在實際觀察program memory中也確實看到他所生成的程式為
movlb 0x00
swapf bcd_temp,F,bank
如果我將marco中的
#define Swapf(f,dest,access) {_asm movlb f swapf f,dest,access _endasm }
改為
#define Swapf(f,dest,access) {_asm movlw f swapf f,dest,access _endasm }
可以在program memory中觀察到他所生成的程式為
movlw 0x07
swapf bcd_temp,F,bank
所以就算所生成的程式為
movlb 0x04
swapf bcd_temp,F,bank
這樣在實際的暫存器位址也不是0x425H而是0x407H。
請問為什麼會有這樣的情形???
我想應該是我使用方式錯誤了,可以請教正確的使用方式嗎?



發表於: 2007/1/31 16:42
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... ]

教育訓練中心

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