• 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: 請問這個字串傳遞為什麼要用 const 來宣告
#8
資深會員
資深會員


查看用戶資訊
感謝如此精闢的說明!

發表於: 2008/6/18 9:02
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#7
資深會員
資深會員


查看用戶資訊
看不出有問題,現幫板主澄清一遍:

因為是用 goto main, 所以 8 層中可用 8 層, 7 層給 call 用, 1 層給中斷

如果是用 call main, 8 層中剩下 7 層, 6 層給 call 用, 1 層給中斷

如果不考慮 call main 的返回 (看程式特性,需返回 OS 的不行),則一樣 8 層都可用,因為 PIC 的 stack 是環狀的,可以蓋過去。


回原問題

引數使用 const,是要確保該引數不會發生不慎被函數更改的情形。

發表於: 2008/6/18 8:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#6
資深會員
資深會員


查看用戶資訊
版大:小弟還有點不明白,如果是採用 call main 來轉移控制權的話,那堆疊會少一層沒有錯,因為還需要返回。但既然是採用 goto main 的方式,為何還會佔用堆疊呢?

發表於: 2008/6/17 14:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#5
版主
版主


查看用戶資訊
意指,Hi-Tech PICC 的啟動程式,在做完一般C的設定後,最後是執行 goto main 來執行使用著程式。有些 C Compiler 在執行完啟動程式後是採用 call main 來轉移控制權的,這樣堆疊就少了一層。

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


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#4
資深會員
資深會員


查看用戶資訊
請問版主:
什麼叫做「goto main 的方式」,可否略作說明,tks。

發表於: 2008/6/17 9:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#3
版主
版主


查看用戶資訊
Hi-Tech PICC 是使用 goto main 的方式,所以 PIC16F 最多只能 call 七層,最後ㄧ層要保留給中斷使用。

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


Re: 請問這個字串傳遞為什麼要用 const 來宣告
#2
資深會員
資深會員


查看用戶資訊
大家好:
我回應一下,如有錯煩請指教.
const char * s =>
設const是因對像為ROM(table),
設為指標方式,
lcd_puts("table");
除了table之外,還會多一0x00當做結束位元.
至於如果 call 很多次的話,編譯的時候都會出現 overflow.
我想不至於,因跟stack無太大的關係,如stack不夠用,
應該有些變數要設至其他bank.

還請指教,Thanks.

發表於: 2008/6/16 17:37
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


請問這個字串傳遞為什麼要用 const 來宣告
#1
資深會員
資深會員


查看用戶資訊
大家好:
想請教高手們一個問題,以下的 LCM 函數是從 HT-PICC 的範例中看到的,照著套用確實可以傳遞一個字串到函數裡面並顯示出來,只是我不明白為什麼要宣告 const char * s 來接字串,還有一個問題就是這個函數如果 call 很多次的話,編譯的時候都會出現 overflow,可能是堆疊不夠用了,請問還有沒有其他方式可以來宣告接收字串,謝謝。

/* write a string of chars to the LCD */

void lcd_puts(const char s)
{
    
LCD_RS 1;    // write characters
    
while(*s)
        
lcd_write(*s++);
}

發表於: 2008/6/16 16:46
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... ]

教育訓練中心

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