LPC21XX系列ARM7驱动RTC RX8025(I/O模拟IIC) -
[导读]/******************************************************************************************* 函数名称 :I2C_Delay* 功能描述 :* 参数 : 参数名称:输入/输出?类型描述** 返回值 :* 作者 :* 创建日期 :2
/******************************************************************************************
* 函数名称 :I2C_Delay
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Delay(uint32 WaitTime)
{
uint32 uiTemp = WaitTime * small;
while (uiTemp--);
}
/******************************************************************************************
* 函数名称 :IO_Write
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void IO_Write(uint16 data, uint16 level)
{
switch(data)
{
case I2C_SDA:
{
switch(level)
{
case High:
IO0SET |= I2C_SDA;
I2C_Delay(5);
break;
case Low:
IO0CLR |= I2C_SDA;
I2C_Delay(5);
break;
}
}//end case
break;
case I2C_SCL:
{
switch(level)
{
case High:
IO0SET |= I2C_SCL;
I2C_Delay(5);
break;
case Low:
IO0CLR |= I2C_SCL;
I2C_Delay(5);
break;
}
}//end case
break;
}
}
本文引用地址: http://www.21ic.com/app/mcu/201809/783015.htm
/******************************************************************************************
* 函数名称 :I2C_Stop
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Stop(void) // I2C总线操作结止位发送
{
IO_Write(I2C_SDA, Low); // SDA = Low
IO_Write(I2C_SCL, High); // SCL = High
I2C_Delay(10);
IO_Write(I2C_SDA, High); // SDA = High
I2C_Delay(5);
IO_Write(I2C_SCL, Low); // SCL = Low
I2C_Delay(5);
}
/******************************************************************************************
* 函数名称 :I2C_Start
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Start(void)
{
I2C_Stop();
I2C_Delay(5);
IO_Write(I2C_SDA, High);// SDA = High
I2C_Delay(5);
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
IO_Write(I2C_SDA, Low); // SDA = Low
I2C_Delay(5);
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(5);
}
/******************************************************************************************
* 函数名称 :I2C_Clock
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
voidI2C_Clock(void)
{
I2C_Delay(5);// SCL = High-> Low
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(2);
}
/******************************************************************************************
* 函数名称 :I2C_Clock_Ask
* 功能描述 :
* 参数 : 参数名称:输入/输出?类型描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
uint8I2C_Clock_Ask(void)
{
uint8Status;
I2C_Delay(5);
IO_Write(I2C_SCL, High);// SCL = High
I2C_Delay(5);
switch ( (IO0PIN&I2C_SDA)&I2C_SDA )
{
case(1<<14):
Status = I2CNoAck;// 返回I2CNoAck
break;
case(0x00):
Status = I2CAck; // 返回I2CAck
break;
}
IO_Write(I2C_SCL, Low);// SCL = Low
I2C_Delay(5);
return(Status);
}
查看评论 回复
"LPC21XX系列ARM7驱动RTC RX8025(I/O模拟IIC) -"的相关文章
- 上一篇:PWM控制LED灯渐亮渐灭(C51) -
- 下一篇:中断时中断寄存器的处理流程 -