<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 11222|回復: 21
    打印 上一主題 下一主題

    [提問] 問個函數問題

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2010-11-16 12:28:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 欄目 , 軟件
    函數是這樣的:
    void update_LCD_display(u8 my_mode_1 , u16 my_data_1 );


    void update_LCD_display(u8 my_mode_1, u16 my_data_1)
    {
      
            my_mode = my_mode_1;
            mydata = my_data_1;
      。。。。。。。。。。。
    }
    my_mode 定義為8位,mydata定義為16位,為全局變量(XDATA)。
    我使用這個函數update_LCD_display(8,333),按道理my_data_1應該是333的,
    可實際上是77,這是什么原因呢?
    沙發
    發表于 2010-11-16 12:42:53 | 只看該作者
    不多說了:
    333 = 0x14D
    77 = 0x4D
    板凳
     樓主| 發表于 2010-11-16 12:48:07 | 只看該作者
    為什么會少了8位?
    地板
    發表于 2010-11-16 13:30:21 | 只看該作者
    沒問題,你重新編譯下試試看

    編譯選擇“Build All”
    并且把優化改成最低
    地下室
     樓主| 發表于 2010-11-16 13:32:31 | 只看該作者
    Build All也一樣
    6
    發表于 2010-11-16 13:33:29 | 只看該作者
    這里人多,問個問題
    7
    發表于 2010-11-16 14:54:10 | 只看該作者
    強拆
    8
    發表于 2010-11-16 16:23:42 | 只看該作者
    你確定是定義是16位嗎?你用的是什么編譯器
    9
     樓主| 發表于 2010-11-16 16:30:57 | 只看該作者
    keil C51
    10
    發表于 2010-11-16 16:39:34 | 只看該作者
    void update_LCD_display(u8 my_mode_1, u16 my_data_1)
    {
      
            my_mode = my_mode_1;
            mydata = my_data_1;
      。。。。。。。。。。。
    }
    這個函數里可能隱性強制轉換成8位的了。能把你這個函數貼全嗎?尤其bcd轉換部分
    11
     樓主| 發表于 2010-11-17 08:43:08 | 只看該作者
    xdata u8 my_mode;
    xdata u16 mydata;
    void code_data_convert( u16 mydata_2 )
    {
         RD8_RETURN = (u8)(mydata_2 / 100) ;       //Hundreds
         RD8_TEMP1 =  (u8)((mydata_2 % 100)/10) ;      //tens
         RD8_TEMP2 =  (u8)(mydata_2 % 10) ;            //ones
    }

    void update_LCD_display(u8 my_mode_1, u16 my_data_1)
    {
      
            my_mode = my_mode_1;
            mydata = my_data_1;
           code_data_convert( mydata );
    .......................
      }
    12
    發表于 2010-11-22 08:52:48 | 只看該作者
    U16 宏定義?
    13
     樓主| 發表于 2010-11-23 20:39:49 | 只看該作者
    問題已解決,是外部環境的問題。
    14
    發表于 2010-11-29 09:17:16 | 只看該作者
    奇怪,外部環境會造成強制轉換嗎
    15
    發表于 2010-12-13 20:13:27 | 只看該作者
    你用的是什么編譯器
    16
    發表于 2010-12-14 10:12:26 | 只看該作者
    “我使用這個函數update_LCD_display(8,333),按道理my_data_1應該是333的,可實際上是77,這是什么原因呢?”


    333-256=77。截斷高字節
    17
    發表于 2010-12-14 15:47:03 | 只看該作者
    333 = 0x14D
    77 = 0x4D
    18
    發表于 2010-12-15 12:59:21 | 只看該作者
    不錯,我來拾分的
    19
    發表于 2010-12-17 13:13:02 | 只看該作者
    我來拾分的
    20
    發表于 2010-12-24 18:26:21 | 只看該作者
    外部環境?不懂。
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷