打印
[ZLG-MCU]

I2C。。周立功的项目驱动。。能读初始的密码

[复制链接]
2047|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
abc2510712|  楼主 | 2011-11-24 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static void __zyI2cAckSend(void)
{
__ZY_I2C_SDA=0;
__ZY_I2C_DELAY();
__ZY_I2C_SCL=1;
__ZY_I2C_DELAY();
__ZY_I2C_SCL=0;

}
static void __zyI2cNakSend(void)
{

__ZY_I2C_SDA=1;
__ZY_I2C_DELAY();
__ZY_I2C_SCL=1;
__ZY_I2C_DELAY();
__ZY_I2C_SCL=0;

}
static char __zyI2cIsAck(void)
{
__ZY_I2C_SDA=1;
__ZY_I2C_DELAY();
__ZY_I2C_SCL=1;
__ZY_I2C_DELAY();
if(__ZY_I2C_SDA==1){
  __ZY_I2C_SCL=0;
  return 0;
}
__ZY_I2C_SCL=0;
return 1;
}
static void __zyI2cByteSend(unsigned char ucData)
{
unsigned char i;
/***发送数据 ***/
i=8;
do{
  __zyI2cBitSend(ucData);
  ucData=ucData<<1;
}while(--i!=0);
}
static unsigned char __zyI2cByteReceive(void)
{
unsigned char ucRt;                  //返回值
unsigned char i;
ucRt=0;
__ZY_I2C_SDA=1;                  //设置为输入

/**************接收数据*************/
i=8;
do{
  ucRt=(ucRt<<1)+__zyI2cBitReceive();  
}while (--i!=0);
      return ucRt;
}
char zyI2cInit(void)
{
__ZY_I2C_SCL=0;
__zyI2cStopSend();
return 0;
}
unsigned char zyI2cWrite(unsigned char ucAddr,
         unsigned int uiRegAddr,
                           unsigned char ucRegAddrLen,
         unsigned char *pucData,
         unsigned char ucDataLen)
{
unsigned char i;
if(ucDataLen==0||pucData==0){
  return 0;
}
i=ucDataLen;
__zyI2cStartSend();                     //发送START信号
__zyI2cByteSend(ucAddr&0xfe);              //发送写信号
if(!__zyI2cIsAck()){                      //接收ACK信号
  /***
     发送寄存器地址
        *************/
  while(ucRegAddrLen>0) {
  __zyI2cByteSend(uiRegAddr);              //发送一个字节寄存器地址
   if (!__zyI2cIsAck()){
    break;
   }
   ucRegAddrLen--;
   uiRegAddr=uiRegAddr>>8;
  }
   if(ucRegAddrLen==0){                          /*
        * 发送寄存器地址成功就发送数据
                  */  do{
     __zyI2cByteSend(*pucData++);     
     if(!__zyI2cIsAck()){               //接收ACK信号
      break;                                                
     }   
    }while(--i!=0);
   }
  }
__zyI2cStopSend();                        //发送停止信号
return (ucDataLen-i);
}
不知道 为什么 总是存不了。。忘大家帮帮忙。

相关帖子

沙发
lishutong| | 2011-11-25 08:16 | 只看该作者
不懂楼主想说什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

14

帖子

0

粉丝