• 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: 關於字元陣列的控制問題。
#5
高級會員
高級會員


查看用戶資訊
真是抱歉,發了月經文,還是很謝謝回覆了我部份的問題,我自已也找到解決的方法了,感謝前輩的回覆。

發表於: 2008/9/19 2:43

Edited by powmien on 2008年09月19日 04:19:50
Edited by powmien on 2008年09月19日 04:21:19
「────I am the bone of my sword.」
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於字元陣列的控制問題。
#4
資深會員
資深會員


查看用戶資訊
這是月經文吧……固定時間來一次。

1)準備兩套函式,一給ROM用一給RAM用。

2)C++的多型函式可以解決這問題,不過PIC16/18沒compiler可用。

發表於: 2008/9/18 14:33
The Answer to Life, the Universe, and Everything.
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於字元陣列的控制問題。
#3
版主
版主


查看用戶資訊
putsLCD ( char *Str) 傳進去的是 char 的指標,所以傳進去的必須是ㄧ個字串的起始位址。
傳進去不是字串的位址當然會有型態不對的警告,C18 並沒有錯,因為宣告上就是要用指標形態的。

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


Re: 關於字元陣列的控制問題。
#2
高級會員
高級會員


查看用戶資訊
我有試過把將傳入的字串先宣告成一個變數再傳入是正常的。

ex:
char *ptr="my string";

putsLCD(ptr);   // ok


是RAM 的使用限制嗎?

發表於: 2008/9/16 11:29
「────I am the bone of my sword.」
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


關於字元陣列的控制問題。
#1
高級會員
高級會員


查看用戶資訊
之前都直接用asm 寫project,最近改用C18重寫LCD control 遇到了字串上的問題,函式傳進去的字串不論是用 static char 、const char、const unsigned char …… 的型態總是不能正確傳進函式(用SIM Debug 去看過數值),compiler 也會出現 D:\Pic Project\I2C Recording\i2c_record.c:480:Warning [2066] type qualifier mismatch in assignment 這個警告訊息

所以來這找了一下,發現在W401 裡面有教學函式,其中一個宣告成 const rom char 另一個宣告成 char ,其中 const rom char 可以正確的傳入字元陣列,而另一個宣告成char 的還是不行而警告訊息也是一模一樣的,不過我在網路上找到的範例程式一般都把字元陣列放在RAM 裡面,我想請問一下前輩們是我少了什麼步驟嗎?感謝。


void main(void)
{
         
putrsLCD("12345");
         
putsLCD("12345");     // 有警告且傳入數值有異

}

//***********************************************
//    Put a ROM string to LCD Module
//
void putrsLCD( const rom char *Str )
{
   while (
1)
   {
    
Str_Temp = *Str ;

        if (
Str_Temp != 0x00 )
           {
        
//    WriteDataLCD(Str_Temp) ;
            
Str ++ ;
           }
        else
            return ;
   }
}

//***********************************************
//    Put a RAM string to LCD Module
//
void putsLCDchar *Str)
{
   while (
1)
   {
    
Str_Temp = *Str ;

        if (
Str_Temp != 0x00 )
           {
        
//    WriteDataLCD(Str_Temp) ;
            
Str ++ ;
           }
        else
            return ;
   }
}

發表於: 2008/9/16 11:26
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... ]

教育訓練中心

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