⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c00.c

📁 IIC通讯单片机源代码,要下载的快
💻 C
字号:
#include "reg51.h"
#include "intrins.h"
#include"address.h"
#define uchar	 unsigned char
#define uint 	 unsigned char
#define true  1
#define false 0
#define bool bit
#define Byte unsigned char
#define Word unsigned int
#define read 0x80
#define write 0x00

//私有内部函数
#define    \
SomeNOP(); \
_nop_();_nop_();_nop_();_nop_();

//私有内部函数
void IICStart(void)
{
    EA = 0;
	IICDATA = 1;IICSCL = 1;SomeNOP();
	IICDATA = 0;SomeNOP(); 
	IICSCL = 0; IICDATA = 1;
}
//私有内部函数
void IICStop(void)
{
    IICSCL = 0;IICDATA = 0;SomeNOP();
	IICSCL = 1;SomeNOP();IICDATA = 1;
	EA = 1;
}

//私有内部函数
void SendAck(void)
{
    IICDATA = 0;SomeNOP();
	IICSCL = 1;SomeNOP();
	IICSCL = 0;
}	
//私有内部函数
void SendNotAck(void)
{
    IICDATA = 1;SomeNOP();
	IICSCL = 1;SomeNOP();
	IICSCL = 0;
}
//私有内部函数
void IICSendByte(uchar ch)
{
    uchar i = 8;
	while(i--)
	{
	    IICSCL = 0;_nop_();
		IICDATA = (bit)(ch&0x80);ch<<=1;SomeNOP();
		IICSCL = 1;SomeNOP();
	}
	IICSCL = 0;
}
//私有内部函数
uchar IICReceiveByte(void)
{
    uchar i = 8;
	uchar ddata = 0;
	IICDATA = 1;
	while(i--)
	{
	    ddata<<=1;
		IICSCL = 0;SomeNOP();
		IICSCL = 1;SomeNOP();
		if(IICDATA)ddata |= 0x01;
	}
	IICSCL = 0;
	return ddata;

}
//私有内部函数
bool WaitAck(void)
{
	IICDATA = 1;SomeNOP();
	IICSCL = 1;SomeNOP();
	while(IICDATA){IICStart();	IICSendByte(0xa0);IICDATA = 1;SomeNOP();	IICSCL = 1;SomeNOP();}
	IICSCL = 0;
	return true;
}

//***********************************
//**公有函数,外部接口             **
//***********************************
//写一个数据
void Write24c02_OneByte(unsigned char addr,unsigned char ddata)
{
    IICStart();
	IICSendByte(0xa0);
	WaitAck();
	IICSendByte(addr);
	WaitAck();
	IICSendByte(ddata);
	WaitAck();
	IICStop();
	SomeNOP();
}
//读一个数据
unsigned char Read24c02_OneByte(unsigned char addr)
{
    uchar temp;
    IICStart();
	IICSendByte(0xa0);  //先写入地址,设置写
	WaitAck();
	IICSendByte(addr);
	WaitAck();
	IICStart();
    IICSendByte(0xa1);   //设置读
	WaitAck();
	temp = IICReceiveByte();
	SendNotAck();
	IICStop();
	return temp;    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -