Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
資深會員
|
請愛用 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
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
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
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
資深會員
|
>> 在兩個傳入值時,可以傳入常數字傳
哪個? >> 是否有其它的可能性來達成 常數字串,在 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
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
To mechwu:
你好,事實上,你說的並沒錯, 只是我很好奇,既然CCS原本所提供的函數,在兩個傳入值時,可以傳入常數字傳,為何我卻不行。 所以,才在想,是否有其它的可能性來達成。
發表於: 2005/10/27 15:22
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
資深會員
|
答案是 ... 不行的
若函數原型是 fun( char c),才可以傳入常數字串 我常說錯話,還是去問 CCS 或上 CCS 討論區比較準,呵呵
發表於: 2005/10/25 20:21
|
|||
|
[問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
Hi,everyone:
請問在CCS裡,自己寫的函數如何才能像它的提供的 printf()一樣,可以用常數字串當傳入值呢? ( 像這樣子 printf("tes%s",var1) ) 我自己寫的函數,只要寫成兩個傳入值的,就是沒辦法用字串常數當傳入值了。
發表於: 2005/10/24 15:44
|
|||
|