欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

24cxx.c

EasyStudy51-II单片机开发系统的库函数源代码.包含了EasyStudy51-II硬件的全部驱动.
C
字号:


#include "AT89X52.h"
#include "ES51_II.h"
#include "ES51_II_LIB.h"

#include <intrins.h>


#define	DELAY_1US	{_nop_();}


// 操作起始
void I2c_Start(void)  
{
	SDA = 1;				  	//	发送起始条件的数据信号
	SCL = 1;
	DELAY_1US;
	SDA = 0;   					//	发送起始信号
	DELAY_1US;      
	SCL = 0;   					//	钳住I2C总线,准备发送或接收数据
}

// 操作结束
void I2c_Stop(void)  
{
	SDA = 0;
	DELAY_1US;
	SCL = 1;
	DELAY_1US;
	SDA = 1;  					//	发送I2C总线结束信号
	DELAY_1US;
	SDA = 1;;   				//	
}

//写一个字节数据
void I2c_WrByte(unsigned char dat)	
{
	unsigned char i;

	for(i=0;i!=8;i++)  			// 输出8位数据
	{
		if( dat & 0x80 ) 
			SDA = 1;
		else 
			SDA = 0;
		DELAY_1US;
		SCL = 1;
		dat<<=1;
		DELAY_1US;  		
		SCL = 0;
	}
	SDA = 1;
	DELAY_1US;
	SCL = 1;  					// 接收应答
	DELAY_1US;
	SCL = 0;
}


//读一个字节数据
unsigned char I2c_RdByte(void)		
{
	unsigned char dat,i;
	
	SDA = 1;
	dat=0;
	for(i=0;i!=8;i++)  		// 输入8位数据
	{
		DELAY_1US;  		// 可选延时
		SCL = 1;
		DELAY_1US;  		// 可选延时
		dat<<=1;
		if( SDA ) 
			dat++;  		// 输入1位
		SCL = 0;
	}
	SDA = 1;
	DELAY_1US;
	SCL = 1;  // 发出无效应答
	DELAY_1US;
	SCL = 0;
	return(dat);
}


//
void EEPROM_WrOneByte(unsigned char slave,unsigned char addr,unsigned char dat)
{
	unsigned char i=200;

	I2c_Start();               		//	启动总线
   	I2c_WrByte( slave & 0xfe );	//	写器件从地址,写器件
	I2c_WrByte( addr );				//	写器件片内地址
   	I2c_WrByte( dat );             	//	发送数据
  	I2c_Stop();                 	//	结束总线
	while(i--);
}

//
unsigned char EEPROM_RdOneByte(unsigned char slave,unsigned char addr)
{
	unsigned char value, i=200;

	I2c_Start();               		//	启动总线
   	I2c_WrByte( slave & 0xfe );	//	写器件从地址,写器件
	I2c_WrByte( addr );				//	写器件片内地址
	//I2c_Stop();

	I2c_Start();
   	I2c_WrByte( slave | 0x01 );		//	写器件从地址,读器件
   	value = I2c_RdByte();             	//	发送数据
  	I2c_Stop();                 	//	结束总线
	
	while(i--);
	return value;
}

⌨️ 快捷键说明

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