找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 291|回复: 0
打印 上一主题 下一主题

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!& L* s3 D! f' C1 Y) k
6 @% Z* v# z! q) E5 O$ h
uchar I2C_SendByte(uchar dat, uchar ack)& _& ]. _% Y% ~5 H
{. }6 E2 y/ [, L6 J0 i! A
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。; F: B$ P' J2 d- Y
                        : y1 @- C& P4 q  `; o5 q
        for(a=0; a<8; a++)//要发送8位,从最高位开始
( b9 e3 V& B$ R" B        {
! p; S, V1 O. z9 B5 K. x( k                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号
9 ^' f9 Q+ ^/ c  d7 b2 g                dat = dat << 1;0 }/ ?, N8 T* a1 R& C
                I2C_Delay10us();
! T% v/ N/ N- L  Q# n# S                I2C_SCL = 1;. ^3 b; `! H% a$ [; y7 m- K. \
                I2C_Delay10us();//建立时间>4.7us9 e  ]) k  D/ O# ]  H# B6 i# [
                I2C_SCL = 0;
1 x! L" p0 }7 ^" J                I2C_Delay10us();//时间大于4us                ' Z1 q( m. a. ?% f1 |. o; P! K
        }
) J7 l" k8 `( J) x
  k$ D, |! K# Y4 {% u7 z* J        I2C_SDA = 1;
% z9 K, ~& Q" a5 T  p; O$ v        I2C_Delay10us();
5 J' s  L/ I. B        I2C_SCL = 1;
0 I. ]# G/ Z* C& F        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
2 M' A9 Z7 S- @6 `  Q- y+ }" j        {. K( Y* |" k+ {  k' n, _# Z# W
                b++;
" v8 _6 r- u" e# b* ]) b0 F0 I- S                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束% }! k7 N& @6 U, R1 d
                {/ A% r9 ^. g6 }. X7 l2 q0 J$ s
                        I2C_SCL = 0;
, v9 V/ F2 M* y                        I2C_Delay10us();
# s  s: n( e7 t$ r5 i' y                        return 0;, M3 A, X1 U$ V" B: x, w
                }
# G% _' y) ]; [8 F        }! K7 k; q) m- V: E& t5 S  |
: r# U& x: }" T$ p
        I2C_SCL = 0;
5 F0 g& d  Y$ J        I2C_Delay10us();" \- A; J1 B) g; K1 l
        return 1;                * k  T% Q' e5 E' W, M/ ?
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-23 13:35 , Processed in 0.054890 second(s), 33 queries , Gzip On.

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

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

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