24小时热门版块排行榜    

CyRhmU.jpeg
查看: 886  |  回复: 3
当前主题已经存档。

daiweisc

银虫 (小有名气)

[交流] 【求助】Keil C51的强制类型转换问题?【已搜无重复】

Keil C51的强制类型转换问题见下面的程序:
bit shout(unsigned char write_data)
{
        unsigned char i;
        bit ack_bit;
        for(i = 0; i < 8; i++)               
        {
                SDA = (bit)(write_data & 0x80);
                _nop_();
                SCL = 1;
                _nop_();
                _nop_();
                SCL = 0;
                write_data <<= 1;
        }
        SDA = 1;                       
        _nop_();
        _nop_();
        SCL = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ack_bit = SDA;                        // 读取应答
        SCL = 0;
        return ack_bit;                        // 返回AT24Cxx应答位
}
其中SDA = (bit)(write_data & 0x80);语句是否是强制类型转换,具体含义是什么?
请高手指教

[ Last edited by bslt on 2009-5-11 at 10:41 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bigmouth1027

新虫 (初入文坛)


sinapdb(金币+1,VIP+0):thanks
是强制类型转换
bit是位
这个语句是赋值语句
即对管脚进行位操作
赋值0或者1
2楼2008-08-22 11:44:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hid

银虫 (初入文坛)


gjliu(金币+1,VIP+0):谢谢交流。 5-10 12:51
SDA = (bit)(write_data & 0x80);

write_data和0x80位与的结构存放在临时变量里面,可能值就是0x80和0x00
强制转换,非零为1
3楼2009-05-09 23:16:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wushihai


bslt(金币+1,VIP+0):欢迎常来信息版交流讨论! 5-11 10:13
SDA = (bit)(write_data & 0x80);
楼上说的对时强制类型转换,非零即一。
我认为如果与完后的结果是零,SDA就是一个bit 0;
如果与完后结果不是零,SDA就是一个bit 1.
4楼2009-05-10 14:57:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 daiweisc 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见