• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: [問題]請教關於CCS語法的問題
#7
新會員
新會員


查看用戶資訊
嗯~~了解。
我有試著看過它在PROGRAM MEMORY裡的程式了,的確如此,在宣告的變數時,會把所設定的初值複製到DATA MEMORY(難怪我宣告越大的陣列,PROGRAM MEMORY就會減少...)。
而STRCPY使用的效果也比起自己用MEMCPY()寫CODE處理好多了,程式碼還較短,又能傳字串常數。
看樣子,自己寫的函數真的是無法傳字串常數進去了。

發表於: 2005/11/7 16:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [問題]請教關於CCS語法的問題
#6
資深會員
資深會員


查看用戶資訊
請愛用 strcpy()

測試過的範例,你也試試看吧

#include <18F452.H>
#use delay(clock=40000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7)

char msg[3][14] =
{ "Hello world! ",
"Error code 1 ",
"Enter command"
};

void myfunc(char *str1,char *str2)
{
char tmp;
tmp = str1[0]; putc(tmp);
tmp = str2[0]; putc(tmp);

puts(str1);
puts(str2);
}

void main()
{
char tmpStr[10];

strcpy(tmpStr, "Test");
myfunc(tmpStr, msg[0]);

while(1);
}

抱歉,更正一下,不需要用 read_program_eeprom(),因為 CCS 在 main 的起始就把字串複製到 RAM 裡的 msg,請看看 LST 就知道 CCS 的動作啦


發表於: 2005/10/31 17:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [問題]請教關於CCS語法的問題
#5
新會員
新會員


查看用戶資訊
To mechwu:
我指的函數,像是printf()、strcpy()都可以在兩個傳入值的時候傳入,常數字串。
例如:printf("Test%C",var);strcpy(str,"Test");
像這樣的作用。
而我自己寫的函數雖然寫成myfunc(char *str1,char *str2)
可是就不能在str1或str2的位置傳入常數字串,後來才知道是CCS的限制,它只有在函數只有一個傳入值的時候才能用常數字串傳入。
我若想達成我要的作法,只要像 mechwu 所說用指標再加上
read_program_eeprom()即能達成嗎?
是不是像這樣:

char tmp = 0;
char str[20]="anystring";

void myfunc(char *str1,char *str2)
{

tmp = read_program_eeprom(str1);
//此時tmp會等於所傳入字串的第一個字?
putc(tmp);
}
void main(){
myfunc("Test",str);

}

發表於: 2005/10/31 14:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [問題]請教關於CCS語法的問題
#4
資深會員
資深會員


查看用戶資訊
>> 在兩個傳入值時,可以傳入常數字傳

哪個?

>> 是否有其它的可能性來達成

常數字串,在 RISC 架構以及 CCS 的處理方式是存入 Program memory,一種可行的做法是編成常數的矩陣

char msg[3][14] ={
"Hello world! ",
"Error code 1 ",
"Enter command"
};

void main()
{
int8 n = 2;

printf( "%c", msg[ n ]);

while(1);
}

下面這種寫法 compile 可通過,不過我還沒測試,您玩玩看吧

char format[3][18] = {
"x = %lu, str = %c",
"y = %lx, str = %c",
"z = %LX, str = %c"
};

printf ( format [ 1 ], n, msg[ 2 ]);

CCS 的 printf() 是非常特別的 printf,與 HiTech 或 C18 的有很大的差異,CCS 的 printf() 並不是函式庫裡的函式,基本上是 compiler 產生的 inline assembly,所以它編出來的 printf 的程式碼非常小。

如果你想要學 printf ( format [ 1 ], n, msg[ 2 ]) 這語法,
寫個 my_function ( format [ 1 ], n, msg[ 2 ]);
傳入字串的起始位址,就是用指標啦,然後,別忘要用 read_program_eeprom() 才能讀出這看起來粉簡單的常數字串喔

CCS 有許多奇怪的特異功能的,呵呵

Have fun!

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


Re: [問題]請教關於CCS語法的問題
#3
新會員
新會員


查看用戶資訊
To mechwu:
你好,事實上,你說的並沒錯,
只是我很好奇,既然CCS原本所提供的函數,在兩個傳入值時,可以傳入常數字傳,為何我卻不行。
所以,才在想,是否有其它的可能性來達成。

發表於: 2005/10/27 15:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [問題]請教關於CCS語法的問題
#2
資深會員
資深會員


查看用戶資訊
答案是 ... 不行的

若函數原型是 fun( char c),才可以傳入常數字串

我常說錯話,還是去問 CCS 或上 CCS 討論區比較準,呵呵

發表於: 2005/10/25 20:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


[問題]請教關於CCS語法的問題
#1
新會員
新會員


查看用戶資訊
Hi,everyone:
請問在CCS裡,自己寫的函數如何才能像它的提供的 printf()一樣,可以用常數字串當傳入值呢?
( 像這樣子 printf("tes%s",var1) )
我自己寫的函數,只要寫成兩個傳入值的,就是沒辦法用字串常數當傳入值了。

發表於: 2005/10/24 15:44
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... ]

教育訓練中心

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