查看: 9477|回复: 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也一样
发表于 2010-11-16 13:33:29 | 显示全部楼层
这里人多,问个问题
发表于 2010-11-16 14:54:10 | 显示全部楼层
强拆
发表于 2010-11-16 16:23:42 | 显示全部楼层
你确定是定义是16位吗?你用的是什么编译器
 楼主| 发表于 2010-11-16 16:30:57 | 显示全部楼层
keil C51
发表于 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转换部分
 楼主| 发表于 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 );
.......................
  }
发表于 2010-11-22 08:52:48 | 显示全部楼层
U16 宏定义?
 楼主| 发表于 2010-11-23 20:39:49 | 显示全部楼层
问题已解决,是外部环境的问题。
发表于 2010-11-29 09:17:16 | 显示全部楼层
奇怪,外部环境会造成强制转换吗
发表于 2010-12-13 20:13:27 | 显示全部楼层
你用的是什么编译器
发表于 2010-12-14 10:12:26 | 显示全部楼层
“我使用这个函数update_LCD_display(8,333),按道理my_data_1应该是333的,可实际上是77,这是什么原因呢?”


333-256=77。截断高字节
发表于 2010-12-14 15:47:03 | 显示全部楼层
333 = 0x14D
77 = 0x4D
发表于 2010-12-15 12:59:21 | 显示全部楼层
不错,我来拾分的
发表于 2010-12-17 13:13:02 | 显示全部楼层
我来拾分的
发表于 2010-12-24 18:26:21 | 显示全部楼层
外部环境?不懂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表