当前位置:首页 > 单片机 > 单片机
[导读]/******************************************************************************************* 函数名称 :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;
}
}

/******************************************************************************************
* 函数名称 :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);
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

引言   心脏病是严重威胁人类健康和生命的主要疾病之一。统计显示约60%的心脏病人死于家中,这些病人如果能够及时获得抢救、护理,是完全可能避免死亡的。由于心脏病发作带有很大的偶然性和突发

关键字: arm7 远程传输 心电采集

方案简介 TMS470PLF221RFPQ1 是 TI 基于 ARM7 内核,专门用来开发汽车仪表盘的一款 MCU,其内带6个步进电机驱动器,可以同时对六个仪表电机进行细分控制,同时芯片

关键字: arm7 MCU 汽车仪表盘

六、SPI接口六—(02)、SPI控制数码管(程序里有详细的步骤~~以及注意事项~~)程序:MDK6_1.c//------------------------------------------------------...

关键字: arm7 spi接口 单片机

六、SPI接口六—(01)、SPI相关应用和寄存器的介绍~~1、特性2、描述3、管脚描述4、寄存器描述a、SPI控制寄存器(SPCR—0XEOO2000)b、SPI状态寄存器(SPSR —0XE0020004)c、SPI...

关键字: arm7 spi接口 单片机

找了半天还是没有找到关于Proteus仿真LPC2106的频率设置~~还有就是暂时还看不懂Startup.s~~所以不知道它是怎么设置的~~不过这里先整理一下PLL~~PLL(锁相环):寄存器描述:a、PLLCON寄存器...

关键字: arm7 pll 单片机 锁相环

#ifndef __MYIIC_H_#define __MYIIC_H_#include "common.h"#include "delay.h"#include "de...

关键字: io口 lpc1788 模拟iic

一曲熟悉的音乐~~Rihanna~~我的手机铃声~~今天就是实时时钟(RTC)~~我决定了~~把ARM7的资料整理完以后不会整理这些资料了~~网上还是很多的~~不过我还是会更新自己学习的心得的~~去了学校~~大三下学期了...

关键字: arm7 rtc 单片机 实时时钟

五、实时时钟(RTC)五—(02)、1s定时控制(通过查询法实现~~)注意:后面的程序有操作步骤~~~~然后就是程序了:MDK5_1.c//----------------------------------------...

关键字: arm7 rtc 单片机 实时时钟

一、输入/输出端口GPIO编程一—(02)、控制LCD1602显示~~废话不多说了~~直接上图~~然后是程序~~MDK1_2.c//--------------------------------------------...

关键字: arm7 单片机 gpio编程

最近有位同事接私活时遇到一个问题,用 Keil-5 可以打开甲方给的工程,但是仿真和下载出错。根据报的错误,找到了问题,原来是 Keil 5 不支持 LPC2368 这款设备。如下图:打开 pack installer...

关键字: 9 arm7 keil mdk v5
关闭
关闭