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

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!; k" J; ~0 U/ I% C/ G# Q
/ l9 }0 U1 p, l! r% ?" L5 e* s# q
uchar I2C_SendByte(uchar dat, uchar ack): W. e; v$ C6 W7 k* N2 J6 I
{# }! g) j  B/ k: v4 J. q' f! v/ l
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。' G7 H6 x& s" W$ B- Y
                        ) C" m9 _% ?$ E# y. D  H# _
        for(a=0; a<8; a++)//要发送8位,从最高位开始4 @( t4 ?# y- p( U8 t$ y" q7 J
        {3 t, E' z& D$ ^  }$ M2 J
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号5 H; ?1 Z: T$ |; k4 m  e! l) g' e4 n
                dat = dat << 1;
: O; h3 ]% d4 z+ Q                I2C_Delay10us();) b: l2 s4 h8 Q1 r. s- s
                I2C_SCL = 1;
  z4 \! D+ ]6 ~& w# \                I2C_Delay10us();//建立时间>4.7us& n) O" Y  p9 o- [
                I2C_SCL = 0;
$ `2 O, M6 x" O2 J  _. N/ S5 m) Q                I2C_Delay10us();//时间大于4us                  B0 Z: P9 U7 o: `
        }
0 H4 u9 p4 Y- f, q& \% X
+ u  P0 h% b' n. d  o+ O3 E5 ], a        I2C_SDA = 1;$ s( J$ ], x/ n8 n; R+ w
        I2C_Delay10us();* A7 z9 A$ l- C/ p
        I2C_SCL = 1;6 a( F# h& j, W9 a5 k
        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
$ M! L% ]1 Y& O. M        {
9 G7 W. T7 J; j4 w$ {/ i6 O, e                b++;. b* H2 _: y+ d5 Q) g* V! D
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束- k. l% q' }8 Y4 T2 m- W& V
                {  {! `1 f1 t+ j4 S
                        I2C_SCL = 0;# q" j, l" o' W* s3 e& X$ Z7 X5 f
                        I2C_Delay10us();
% \# s8 H. A" I/ ^  S  R                        return 0;$ p  M' y6 s; i" B( r
                }
! B9 |/ |3 d# M; s: n        }
. Y. ]  j+ M2 d, S$ l" q, l4 `
( w1 {$ c# V& P; C        I2C_SCL = 0;1 O4 _* p- g4 M  B
        I2C_Delay10us();
6 g, @6 n; J/ v         return 1;               
( y3 a" \. |, K9 S. V! v9 Z}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-6 01:14 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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