打印

指教:下面语句中,变量字节长度的变化

[复制链接]
848|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hszhzwd|  楼主 | 2020-7-22 19:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hszhzwd 于 2020-7-22 19:31 编辑

这是W5500.C中的发送双字节数据的函数:
void SPI_Send_Short(unsigned short dt)
{
        SPI_Send_Byte((unsigned char)(dt/256));        //写数据高位
        SPI_Send_Byte(dt);                                                //写数据低位
}
函数形参为unsigned short dt:dt为双字节变量,
SPI_Send_Byte()该函数的形参应为单字节变量,(unsigned char)(dt/256)这样的表示方法就将计算结果变成了单字节了?还有下一个语句的dt,也变成了单字节了?不明白,请指明理论依据。谢谢。

使用特权

评论回复

相关帖子

沙发
yueguang3048| | 2020-7-23 10:27 | 只看该作者
不懂编程的
  
        SPI_Send_Byte((unsigned char)(dt/256));        //写数据高位
        SPI_Send_Byte(dt);                                       //写数据低位
-----------------------------------------------------------------------------------------------
        SPI_Send_Byte((unsigned char)(dt/256));        //dt/256=dt>>8=dt/2^8 右移一位除以2,左移一位乘以2
        SPI_Send_Byte((unsigned char)(dt));              //调用前面函数,这里是存在一个转化,默认保留低字节8bit

使用特权

评论回复
板凳
LcwSwust| | 2020-7-23 11:01 | 只看该作者
看SPI_Send_Byte函数的参数定义,会自动转换过去,一般可直接写SPI_Send_Byte(dt/256);

使用特权

评论回复
地板
hszhzwd|  楼主 | 2020-7-23 15:10 | 只看该作者
谢谢指教,我明白了,这是属于类型转换。写程序较少,第一次遇见类型转换的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

38

帖子

1

粉丝