| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:关于I2C写的程序问题,有点不明白?
取消只看楼主 加入收藏
loveflyer
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-20
收藏
 问题点数:0 回复次数:1 
关于I2C写的程序问题,有点不明白?

大家好,我这里是一个较为完整的I2C程序,但是有一点
不明白,为什么还有个一个BOOL i2cA_clock( void )函数
,我从前写汇编时可没有用这个CLOCK的


void delay_5us(void)
{
_nop_();
}
//---------------------------------------------------------
void i2cAStartA( void )
{
_sdaA = HIGH ;
_sclA = HIGH ;
delay_5us() ;
_sdaA = LOW ;
delay_5us() ;
_sclA = LOW ;
}


void i2cAStop( void )
{
delay_5us() ;
_sclA = LOW ;
_sdaA = LOW ;
delay_5us() ;
_sclA = HIGH ;
delay_5us() ;
_sdaA = HIGH ;
}
/*---------------------------------------------------------
void i2cAInit( void )
{
i2cAStop() ;
}
*/
//---------------------------------------------------------
BOOL i2cA_clock( void )//?????????????????
{
BOOL sample ;

_sclA = HIGH ;
delay_5us() ;
sample = _sdaA ;
_sclA = LOW ;
delay_5us() ;
return ( sample ) ;
}
//---------------------------------------------------------
void i2cANotAck(void)
{
/*receive state, ack set by master*/
_sdaA = HIGH ;
i2cA_clock() ;
}
//---------------------------------------------------------
void i2cAGiveAck(void)
{
//receive state, ack set by master
_sdaA = LOW ;
i2cA_clock() ;
_sdaA = HIGH ;
}
//-----------------------------------------------------------------------------
UINT8 i2cAReceive(void)
{
/*Read ack.*/
UINT8 value = 0 ;
register UINT8 i ;

for ( i=0 ; i<8 ; i++ ) {
value *= 2 ;
_sdaA = HIGH ;
if (i2cA_clock())
value++ ;
}

return ( value ) ;
}
//-----------------------------------------------------------------------------
BOOL i2cATransmit(UINT8 value)
{
register UINT8 i ;

// send the eight data bits
for ( i=0 ; i<8 ; i++ )
{
_sdaA = (bit)( value & 0x80 ) ;
value = value << 1 ;
i2cA_clock() ;
}

// solicit ACK.
_sdaA = HIGH ;
return (!i2cA_clock()) ;
}

搜索更多相关主题的帖子: void delay LOW STRONG 
2006-11-01 08:50
loveflyer
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-20
收藏
得分:0 
2006-11-01 09:59
快速回复:关于I2C写的程序问题,有点不明白?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012095 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved