找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
; |6 t! Z* S5 n4 l2 O* S
% e/ u8 S" t" Wuchar I2C_SendByte(uchar dat, uchar ack)
- I5 u! i: N$ E{
! u4 A4 Y# `  p. m$ m0 ~( c        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。% \7 h# l3 J% C8 U& d
                       
5 G' e4 w! Z' |0 i        for(a=0; a<8; a++)//要发送8位,从最高位开始
& T& t7 M& P! t6 P1 m2 ^) B& C        {3 C7 L- H: X0 L" E0 h
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号- d# i& y; u; A) Y6 S2 C
                dat = dat << 1;# N6 R5 s- D) |
                I2C_Delay10us();
/ u& a$ w' q* w* e8 |4 w' E! x                I2C_SCL = 1;/ t8 p$ t; ]) p  n9 S$ Q3 q
                I2C_Delay10us();//建立时间>4.7us
$ A! B+ w/ X" R7 j                I2C_SCL = 0;1 V8 Z+ L* d  q* m  w* |: {1 H( m
                I2C_Delay10us();//时间大于4us                * Z; q! D0 I1 h# r
        }
! F! `  \' E' z: K
: y+ N  Y/ D' U/ ^$ m' \5 I/ @        I2C_SDA = 1;7 v) U, H1 x3 E) x( G& }
        I2C_Delay10us();) U3 c$ s2 B9 h6 `4 P
        I2C_SCL = 1;7 h1 J; y) m& o$ E" N# L9 w
        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
; Z& B" J8 R8 |1 e  T0 S        {8 q  ^0 t- o% s5 A- T6 D& J# ]' ?
                b++;( a0 ?. `" m1 P; ]- R
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束" C1 D3 I* p, _  w2 Y* a5 s
                {
9 b$ u, Q1 t% i                        I2C_SCL = 0;
7 C( r5 S/ j& T# Y  X                        I2C_Delay10us();
5 Q+ e( H  Y( T$ v) k                        return 0;
( d$ k+ j3 U  a. [! s1 }1 l                }; j% f  x9 ?, D  `
        }9 p1 [: w( o' C8 ^" T+ H- L( W
$ w" Z, U. n9 A9 \. t- o# H, S
        I2C_SCL = 0;
. l6 Q/ d. @( _. P. u8 f+ I  G        I2C_Delay10us();& h6 ?3 }( @7 s! A0 L
        return 1;               
0 w# F5 }: M2 ?}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-23 17:12 , Processed in 0.054306 second(s), 32 queries , Gzip On.

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

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

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