找回密码
 注册
关于网站域名变更的通知
查看: 857|回复: 0
打印 上一主题 下一主题

关于I2C读写问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-7-24 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
' N& [; j% `7 V6 [) l% q/ R2 ]4 V
6 G+ c/ K* G' F6 h& `2 U. T; Vuchar I2C_SendByte(uchar dat, uchar ack)+ `, R9 X5 X/ C+ H+ R
{
  o1 d2 I  w, d: A$ b! W0 \. `        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。
% g4 i( [& p8 D, e; I% n; O8 H" z- [" U                        0 O, j9 m4 Y5 w' U  u
        for(a=0; a<8; a++)//要发送8位,从最高位开始
4 x) T& }1 k& _- m7 K6 o        {1 f' B$ t; B# z1 D
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号8 W; j: T1 d0 X1 x
                dat = dat << 1;
# o: d7 b; H& p$ m: z5 [                I2C_Delay10us();
) `3 Y# l( }; i' v4 j. P# P# K                I2C_SCL = 1;9 K5 K: E( R( d4 \& [) r
                I2C_Delay10us();//建立时间>4.7us
# d% K; [* p1 J% c. I                I2C_SCL = 0;0 V) J+ G9 k0 Y
                I2C_Delay10us();//时间大于4us                2 b' M3 g! ^: |5 V1 e8 }, |: ^
        }5 a& v0 @9 @' }( p' R
6 [% f( K% H! i% [
        I2C_SDA = 1;) }- X! Y+ t- @$ o, g! w  S
        I2C_Delay10us();+ i9 [/ [0 q3 e5 B
        I2C_SCL = 1;5 m8 W" {8 T9 s" U
        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
3 G+ w& Y) Y/ v        {
4 L% ^2 R7 ~7 s/ w                b++;% h) [) X4 W8 U: {0 H( V
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束# j# V4 H# E, w; J% D
                {# \0 c) G0 l& {! D
                        I2C_SCL = 0;
4 `, |5 v2 A# p3 I6 S% W                        I2C_Delay10us();
% U# S9 s3 T, H                        return 0;* V% P1 _5 ~; t9 M5 s' L. T; c' y
                }; }8 q) E3 M! S, k" L% q
        }
5 N1 t: J% {$ F% ]& y# Y& w; B3 w4 Y& M3 h! g+ L* j8 R: _
        I2C_SCL = 0;
  O! q+ P! Q0 g- Y        I2C_Delay10us();+ @+ b( l, G2 [) P$ C6 h7 u; q& z  @
        return 1;                ' G6 r0 b; N, l
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 11:18 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表