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

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!0 [5 k0 S+ u5 e

3 w, U* m$ r) T+ b# a( S" `uchar I2C_SendByte(uchar dat, uchar ack)
; F/ y% k- i% q* V/ y, D4 f{  v+ C; d, X! a2 X; |( S, U
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。
) @, c" i: k  f( y* y. W7 A5 i                       
: J3 S6 N8 A% x! `        for(a=0; a<8; a++)//要发送8位,从最高位开始
; {, ^# P  Q9 x0 k; Y  f/ |        {, a, q; }9 a3 V
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号6 i& n/ t- o* Y# S
                dat = dat << 1;
5 P7 N) e: K- {, C                I2C_Delay10us();9 F& \2 E8 s( ~# G
                I2C_SCL = 1;  l9 B* n9 D8 |3 A
                I2C_Delay10us();//建立时间>4.7us+ f$ `( n5 h, v$ v9 ?# }- d, U
                I2C_SCL = 0;
2 ^/ M, f: c- ?8 X4 }                I2C_Delay10us();//时间大于4us                8 h: g* U/ m7 r5 {1 y2 D9 e, @
        }
! s% N& v) c/ c: M8 [; d( a) ^: R, `, n) X
        I2C_SDA = 1;4 Z1 P- g0 c) Z+ A5 Q, Q
        I2C_Delay10us();4 W/ }  w3 @+ j4 {3 P
        I2C_SCL = 1;
5 z: O8 j* M2 F9 @/ l; y        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低3 W  k  A; L/ F: L
        {' H6 [  H. F7 U" p' ?: [# E
                b++;) n; b2 L$ n9 |# C2 ]
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束: P" D" }& O% P2 N8 _/ _
                {
* G) n* d$ y1 l0 e                        I2C_SCL = 0;6 D+ }8 d- `& q. U% t4 }
                        I2C_Delay10us();6 v5 H8 \. l" D4 W0 P
                        return 0;
- }2 L) o# w+ N0 w1 l4 [/ N& h                }5 ^2 W  F: `: K! g7 Z
        }
  A9 M5 z1 {+ P6 e+ ^# s" u1 ?; A5 H5 F  D" U& G! N( L
        I2C_SCL = 0;8 k% Y* e: O* Z, ?# ~
        I2C_Delay10us();
9 ~, k- n& J+ U9 \' L- c. w         return 1;               
2 v8 ?! |  S% r- B! z+ j- P}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 15:42 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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