打印

读写24C256的程序问题

[复制链接]
1487|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangmengl|  楼主 | 2007-11-9 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是用avr通过I2C写的,
(1)I2CWrite(Addr >> 8)中的Addr >> 8是什么意思?为什么要右移8位?
(2)I2CWrite(Addr & 0xFF) 是什么意思?
请教高手们!

BYTE I2CSendAddr(UINT16 Addr)
{
    I2CStart();
    I2CWait();
    if (I2CState() == TWI_SEND_START ||
    I2CState() == TWI_SEND_RESTART) {
    I2CWrite(I2C_ADDR_BASE);
    I2CWait();
    if (I2CState() == TWI_SEND_ADDR_ACK) {
#ifdef    SUPPORT_I2C_24C256
        
            I2CWrite(Addr >> 8);//?
        
            I2CWait();
        if (I2CState() == TWI_SEND_DATA_ACK)
#endif
        {
        I2CWrite(Addr & 0xFF);
        I2CWait();
        if (I2CState() == TWI_SEND_DATA_ACK) {
            return TRUE;
        }
#ifdef    DEBUG_WITH_PC
        else {
            ShowDebugCMM(_c_IE);
            ShowDebugDec(4);
        }
#endif
        }
#ifdef    DEBUG_WITH_PC
        else {
        ShowDebugCMM(_c_IE);
        ShowDebugDec(3);
        }
#endif
    }
#ifdef    DEBUG_WITH_PC
    else {
        ShowDebugCMM(_c_IE);
        ShowDebugDec(2);
    }
#endif
    }
#ifdef    DEBUG_WITH_PC
    else {
    ShowDebugCMM(_c_IE);
    ShowDebugDec(1);
    }
#endif

    return FALSE;
}

相关帖子

沙发
john_light| | 2007-11-9 17:00 | 只看该作者

因为输入是两字节的地址

高地址先送。

使用特权

评论回复
板凳
wangmengl|  楼主 | 2007-11-10 08:22 | 只看该作者

谢谢!那Addr是不是器件内部子地址?

我要改成ARM来写的话,也是用2字节吧!

使用特权

评论回复
地板
fantesy| | 2007-11-10 09:01 | 只看该作者

看看DATASHEET

你先看看资料啊,是用两字节写的,还有要看I2C协议,你就知道了!

使用特权

评论回复
5
wangmengl|  楼主 | 2007-11-12 08:44 | 只看该作者

好!那我先看看吧~!谢谢了

使用特权

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

本版积分规则

23

主题

65

帖子

0

粉丝