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

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!! m( B* g3 o$ o+ e% [6 I( g' \9 a

3 ^. n7 R7 p- ~/ p- }& Uuchar I2C_SendByte(uchar dat, uchar ack)
4 f+ j, n* m6 L' \) o- \" p* C{
' m8 |3 _' q; H* U9 X: A        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。9 K8 S6 B  D* ^8 t: O
                        / V9 N1 i) Q$ D: ~( D5 L2 i
        for(a=0; a<8; a++)//要发送8位,从最高位开始
% Y  V: k# E3 B. D        {( E& r( j3 `. c6 W2 V
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号
# F) p% X& T  G/ F$ m6 y0 ?                dat = dat << 1;, ]* W: F3 D! D
                I2C_Delay10us();6 P% d! _. H- ^0 T" _( U% h6 _/ P, q
                I2C_SCL = 1;( v, H! ]) ^) s
                I2C_Delay10us();//建立时间>4.7us, V3 }; L/ Z+ Y$ P5 y
                I2C_SCL = 0;
( S' R" ?! G3 Z! ?6 }                I2C_Delay10us();//时间大于4us                ! K/ ?) X( I  |) a
        }: A; \8 F/ d5 M; @$ v- ~' J
5 B. _# ?  j) d$ ~6 T
        I2C_SDA = 1;
, L5 I6 j5 p  g1 t        I2C_Delay10us();5 g3 l$ P6 H$ D2 E, ]9 l
        I2C_SCL = 1;
9 Y8 B4 j4 k7 V" b        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
5 }- E! r; A! ^/ g8 K& w        {
+ a: R# [8 z9 R8 K. q' q* F                b++;; s. g/ ?( o' J! Z) n0 U
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
+ f$ S; F$ s1 Q" k$ j- v                {
# t# z, ]6 Z1 x' s$ E. W                        I2C_SCL = 0;
- n& V$ E+ _+ C, {7 o                        I2C_Delay10us();( W2 Q# k, u! W2 v* d2 m' i
                        return 0;. v4 d3 {- \0 m3 [/ c; `  w
                }
* o2 J, v2 J& j2 \        }
: C+ M: V) C% u$ [% V; u& K& K3 W& c! N  `$ O
        I2C_SCL = 0;
" Q6 U+ n7 _* A7 \        I2C_Delay10us();! ~) T  S& l/ T% d
        return 1;                4 _4 P% A. c! C+ }/ k) b/ m8 h0 Q1 g
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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