📄 24c16.c
字号:
/****************************************************************************
【文 件 名 称】24C16.C
【功 能 描 述】输入输出程序
【程 序 版 本】1.0
****************************************************************************/
//***************************************************************************
#include <REG2051.H>
#include "INC\DECLARE.H"
#include "INC\SM89516A.H"
#include "INC\IOMOD.H"
#include <intrins.h>
//***************************************************************************
#define Delay_2us() _nop_();_nop_();
#define Delay_5us() _nop_();_nop_();_nop_();_nop_();_nop_();
/****************************************************************************
名称: IIC_Start
参数: 无
返回值: 无
描述:
创建日期:
修改日期:
****************************************************************************/
void IIC_Start()
{
SDA =1;
Delay_2us();
SCL =1;
Delay_5us();
SDA =0;
Delay_5us();
SCL =0;
}
/****************************************************************************
名称: IIC_Stop
参数:
返回值:
描述:
创建日期:
修改日期:
****************************************************************************/
void IIC_Stop()
{
SDA =0;
Delay_2us();
SCL =1;
Delay_5us();
SDA =1;
Delay_5us();
}
/****************************************************************************
名称: IIC_SendByte
参数:
返回值:
描述:
创建日期:
修改日期:
****************************************************************************/
void IIC_SendByte(unsigned char data8)
{
unsigned char bitcnt ;
bitcnt =8;
while (bitcnt-- >0)
{
if ((data8&0x80)==0)SDA =0;
else SDA =1;
Delay_2us();
SCL =1;
Delay_5us();
SCL =0;
data8 <<=1;
}
Delay_2us();
SDA =1;
Delay_2us();
SCL =1;
Delay_5us();
SCL =0;
}
/****************************************************************************
名称: IIC_RcvByte
参数: 无
返回值: IIC得到的数
描述:
创建日期:
修改日期:
****************************************************************************/
unsigned char IIC_RcvByte(void)
{
unsigned char temp ,bitcnt =8;
SDA =1;
temp = 0;
bitcnt =8;
while(bitcnt-- >0)
{
Delay_2us();
SCL =0;
Delay_5us();
SCL =1;
Delay_5us();
temp<<=1;
if (SDA==1) temp ++;
}
SCL =0;
Delay_5us();
SDA =1;
Delay_2us();
SCL =1;
Delay_5us();
SCL =0;
return temp;
}
/****************************************************************************
名称: Get_SP_Byte1
参数: slav_addr: EEPROM主地址
sub_addr :EEPROM从地址
返回值: 无
描述:
创建日期:
修改日期:
****************************************************************************/
unsigned char Get_SP_Byte(unsigned char slav_addr,unsigned char sub_addr)
{
unsigned char result;
IIC_Start();
IIC_SendByte(slav_addr);
IIC_SendByte(sub_addr);
IIC_Start();
IIC_SendByte(slav_addr+1);
result = IIC_RcvByte();
IIC_Stop();
return result;
}
/****************************************************************************
名称: Save_SP_Byte1
参数: SLAV_ADDR: EEPROM主地址
nvm_addr :EEPROM从地址
val_write:欲存的值
返回值: 无
描述:
创建日期:
修改日期:
****************************************************************************/
void Save_SP_Byte(unsigned char slav_addr,unsigned char sub_addr,unsigned char val)
{
IIC_Start();
IIC_SendByte(slav_addr);
IIC_SendByte(sub_addr);
IIC_SendByte(val);
IIC_Stop();
Delay_Nms(10);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -