找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
7 g% |' O! |( M
  B$ z1 x5 P# D$ z* L1 U6 iuchar I2C_SendByte(uchar dat, uchar ack)) W' o7 j6 B$ \& Z! J& P0 x: S: b
{! @/ P6 ^4 J5 N" E
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。5 X9 U. M) q* a8 I
                       
$ v4 h) J9 E0 W' R9 F3 \        for(a=0; a<8; a++)//要发送8位,从最高位开始9 L( x* d) n9 J: }0 M& O8 i
        {
5 P6 A7 }! B2 y7 N8 H/ ]$ n, {                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号
4 c4 v4 n( l7 M! M: A# @) e                dat = dat << 1;0 ~$ N2 O+ w9 A4 a
                I2C_Delay10us();4 g7 W. r; N5 T/ V& j! n1 Y: Z4 Z
                I2C_SCL = 1;
+ H# F) T$ F4 n. j! [' x                I2C_Delay10us();//建立时间>4.7us  p0 @; Z$ O! L. s
                I2C_SCL = 0;1 u9 b2 }7 l: g1 n9 D& Q$ Y
                I2C_Delay10us();//时间大于4us               
( t* I/ ^) e; u3 I/ x4 r# k! F        }
) B$ F9 |& N& I2 ~* k  [. w$ e. n" k# ^; G
        I2C_SDA = 1;
8 x3 Y+ V) K2 P( A+ W0 V$ I/ s' A        I2C_Delay10us();
" U, d. h( d' C6 |        I2C_SCL = 1;
0 T# P+ F. ^. F9 J% X        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低2 ^. G# B% l0 q4 |* c
        {; W$ v- ?, I0 ^9 R/ T
                b++;
2 b; w' f" Y8 R' I; t2 `( p                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
1 ?; ]1 ?1 i: x7 M; z2 d( X$ B                {
% Q( U7 d. g/ t& S* o                        I2C_SCL = 0;2 f% j: T# a3 [: |2 L' c
                        I2C_Delay10us();: j* K5 T4 i0 z3 F* {& s
                        return 0;
+ i! M3 p6 Q- A! g9 H                }
% K3 A. q' U- W        }
/ O' j7 a1 D6 v. v' k* f2 j: a( f9 D, |
; _) n7 H# y. `7 u% K: p* m6 e) M        I2C_SCL = 0;
$ H0 @9 w/ Q) V, [- l        I2C_Delay10us();
" d8 G3 S: k( z- q" a: C& t         return 1;                * y8 t# ^6 t% N; K8 @5 i
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-2 04:53 , Processed in 0.051600 second(s), 32 queries , Gzip On.

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

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

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