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

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
; K  g( p" e. L- d9 K9 B* t$ o' n! S. d" y- g1 N' J
uchar I2C_SendByte(uchar dat, uchar ack)  |9 a2 P% b$ e' b( L: G
{* r8 [" X: {* [. E* W* p
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。1 q" s4 |5 n+ ]6 e+ M1 B
                        ! a% q& H# D/ ~, e. @" B: _) _
        for(a=0; a<8; a++)//要发送8位,从最高位开始
2 M/ N/ K7 ^" f. H$ s5 h$ r        {! l; A2 e) Z6 ]5 z
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号
  c% l' d( X: p9 S' J/ Q% j                dat = dat << 1;
: C% E3 f9 A4 d% \' c/ J                I2C_Delay10us();2 D, m1 |: _. r' Z' X; i8 `  m
                I2C_SCL = 1;
1 I# P: D* ~, R" ?& A5 w                I2C_Delay10us();//建立时间>4.7us8 I1 ]9 o  p1 V8 l, f
                I2C_SCL = 0;
% o  I- E% g( ^                I2C_Delay10us();//时间大于4us               
% w9 ^0 L2 d3 z; c: ]        }
% p, Y1 _( d2 Z, \+ D$ }) o$ x
, {1 B9 v( B! p# L$ B8 B1 R$ N- C        I2C_SDA = 1;# b0 m2 A" J8 |& e* s
        I2C_Delay10us();
2 c' Y% A9 M6 K" D6 y        I2C_SCL = 1;
3 A! J- ?4 F' O6 s) e( y        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
' M6 X$ m7 c7 f" J! l/ \: Z        {6 I/ b% j1 S, [% |
                b++;
0 n3 ~' [9 z$ u; E) ^; t2 c3 C                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
/ Y# L8 t' B( v2 z                {
" o+ U3 Z6 I; i4 x& U4 ^4 V; M                        I2C_SCL = 0;
$ k, \# g  T$ `8 r" x! W& s                        I2C_Delay10us();
. J) A/ ^$ w  _+ c, H+ e% C1 E                        return 0;1 u3 w1 x8 f$ S& r
                }2 y- R5 |7 m/ w% Z- q
        }
3 E7 a8 U  y+ q  o! n2 a6 x2 Q
        I2C_SCL = 0;
6 l) J3 S, K+ @        I2C_Delay10us();4 P# w. f& k6 o8 Q$ D, @# z
        return 1;               
& I% U+ I, b, g* N* n! z& Q}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-18 05:00 , Processed in 0.078125 second(s), 24 queries , Gzip On.

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

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

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