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


Browsing this Thread:   1 Anonymous Users






Re: C18 function 傳值問題
#4
版主
版主


查看用戶資訊
C18 的堆疊指標設定是可以改變的,但它不可以跨越不同的BANK,參數的傳遞也可以不要用堆疊傳送,透過 Project 裡 C18 的 option 選項 將storage class設為 static 即可。

發表於: 2006/6/6 11:48
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18 function 傳值問題
#3
高級會員
高級會員


查看用戶資訊
//DATABANK NAME=gpr4 START=0x400 END=0x4FF
//DATABANK NAME=gpr5 START=0x500 END=0x5FF
//DATABANK NAME=gpr6 START=0x600 END=0x6FF
//DATABANK NAME=gpr7 START=0x700 END=0x7FF
DATABANK NAME=gpr4 START=0x400 END=0x4F1
DATABANK NAME=gpr5 START=0x4F2 END=0x5F2 //POWMIEN
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED

DATABANK NAME=hugestuff START=0X5F3 END=0X7F3 PROTECTED //POWMIEN
SECTION NAME=HugeObj RAM=hugestuff //POWMIEN

SECTION NAME=CONFIG ROM=config

STACK SIZE=0x100 RAM=gpr3

好像找到真正的原因了,因為要用 huge array 所以修改了lkr檔... 本來 stack 那邊是最成 gpr5 的,也就是0x4f2到0x5f2間用0x100 來當stack , 結果值傳入正確,但是function 會跑錯address fetch value , 所以就錯了.. 改成其它 0x'n'00 起始的 grp'X' 就能正確對映到,所以 stack 一定要在 0x'n'00 起始?還是有其它技巧?請賜教.....

發表於: 2006/6/6 11:09
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18 function 傳值問題
#2
高級會員
高級會員


查看用戶資訊
看來我自已都搞混了,傳值真的會有問題,
請問是那裡有誤呢?

我建立了很多這種類型的function
void nand_ale(unsigned char); //protype

function 傳入也都寫成 sel , 不過就是
進來的值會有誤,請先進賜教。
void nand_ale(unsigned char sel){
................
}

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


C18 function 傳值問題
#1
高級會員
高級會員


查看用戶資訊
先進好,
最近有空 把assembly 寫的 project 改成c 的..
不過 遇到了些小問題
我的nand_ale(0x01); 這樣傳入時..
會出錯,我在nand_ale的開頭設breakpoint 發現..
0x01 進去變 0xFE ... 請問題什麼地方有問題呢?
感謝。

忽然發現原因了..
因為我都把 bsf f,d,a 的 a 設成 0 ,改成 1 就行了...

不過 還是有點模糊,能請先進解說一下
因為爬了許多文章,上面都說 c 好像會自已切換 bank
所以我 都設 0 不管那麼多,原來還是有影響?
能請先進解說一下 a 為0 與 1 的使用時機嗎?


void nand_ale(unsigned char); //protype

void nand_ale(unsigned char sel){
switch(sel){
case 0:
_asm
bcf NAND_ALE,0
_endasm
break;
case 1:
_asm
bsf NAND_ALE,0
_endasm
break;
default:
_asm
bcf NAND_ALE,0
_endasm
break;
}
}

因為是0xFE所以每次都執行 default 那一段....
想不出原因,請先進解答。

發表於: 2006/6/5 18:24
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... ]

教育訓練中心

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