找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
8 r# P* @$ L3 _) o0 s
& p# A+ o0 R6 w3 cuchar I2C_SendByte(uchar dat, uchar ack)
! p$ a* U! v; F8 L{8 h  `( F3 ?/ D" X% B; R* f0 h
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。  B+ G, c( V" j5 ~
                       
* [$ G0 `9 {9 v4 v7 M. [! p        for(a=0; a<8; a++)//要发送8位,从最高位开始' @* I, Z! o" w! j8 X& X! [
        {2 a2 k: e" W$ G6 n: t
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号  ^/ P2 H  @7 i' J
                dat = dat << 1;! f/ f% L) R6 u# e
                I2C_Delay10us();
, }6 q+ z8 a8 D, a5 y9 t6 N                I2C_SCL = 1;
' ~" Y! j4 `( N9 e7 u: H                I2C_Delay10us();//建立时间>4.7us
/ I/ O9 ~4 s2 ^, X% h! F                I2C_SCL = 0;; P3 f! R7 k& C
                I2C_Delay10us();//时间大于4us               
/ a$ }% F: B0 b" j+ Q% Y        }, g4 P; W/ m1 A
; t3 j' A3 ^% ^6 `
        I2C_SDA = 1;5 W( ^/ l7 N; K" g% y7 t
        I2C_Delay10us();+ c/ S) m6 a2 {% K2 z" ~# o
        I2C_SCL = 1;
, r$ h3 L, @" c) X2 E; a1 e        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低' N% B: E) ?6 ^  }% t
        {" ^; E, Q( c) l& Y+ U
                b++;
! {5 B5 ?2 T( S0 T. Q8 h& x$ ^% f                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束* s/ w9 }! ]1 y) y2 X
                {. r5 S# X* [1 Z5 k7 L
                        I2C_SCL = 0;
7 Y# ]& Y4 _( _4 D7 z                        I2C_Delay10us();; i7 {. s, s: g. h: C
                        return 0;
% Q& \$ X4 K* x/ J. }; X                }
1 B* P3 K/ ?9 b1 a  K3 q* ~, V        }
: L) v, V- a9 v% t7 R8 ?) r
2 i* s! Q- j6 _4 |& w: x        I2C_SCL = 0;9 `3 {  A5 M0 ~+ i+ X8 `* Q5 R+ P
        I2C_Delay10us();& N9 R- R- g1 d6 K0 `) c# e- [, W/ m
        return 1;                ) d: P0 Q' E# Z) x
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-27 10:03 , Processed in 0.061813 second(s), 32 queries , Gzip On.

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

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

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