• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: IIC驱动  

资源简介

IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动IIC驱动

资源截图

代码片段和文件信息

/*-------------------------------------------------
AT24C02.H
系统存储驱动源文件
--------------------------------------------------*/
#include “AT24C02.h“

//-----------------------------------------------------------------------
// 主机向IIC总线写一字节
//-----------------------------------------------------------------------
bit IIC_WriteByte(CHAR8U dat)
{
CHAR8U i;
for(i = 0; i != 8; i++) //8个时钟脉冲
{
NOP4(); dat <<= 1; AT24C02_SDA = CY; //高位优先输出
NOP4(); AT24C02_SCL = 1; NOP4(); AT24C02_SCL = 0; //串行时钟脉冲输出
}
IIC_Rd_Ack(); //主机读从机应答
return F0; //返回从机应答状态
}

//-----------------------------------------------------------------------
// 主机从II总线读一字节
//-----------------------------------------------------------------------
CHAR8U IIC_ReadByte()
{
CHAR8U idat = 0x00; AT24C02_SDA = 1; //置数据线为输入
for(i = 0; i != 8; i++) //8个时钟周期循环
{
AT24C02_SCL = 1; NOP4(); //时钟线置高电平
dat = (dat << 1) | AT24C02_SDA; NOP4(); //主机读取1位
AT24C02_SCL = 0; NOP4(); //时钟线置低电平
}
return dat; //返回读取的字节
}
//-----------------------------------------------------------------
// 向任意指定的地址写入一字节数据
// 器件地址码字节格式(其中E2E1E0为片选位)
// 位 B7 B6 B5 B4 B3 B2 B1 B0
// 值  1  0  1  0 E2 E1 E0 RW
//-----------------------------------------------------------------
void AT24C02_RandomWrite(CHAR8U Dev_AddrINT16U mem_addrCHAR8U dat)
{
IIC_Start(); //总线启动
IIC_WriteByte(Dev_Addr); //器件地址Dev_Addr
IIC_WriteByte(mem_addr); //内存地址mem_addr
IIC_WriteByte(dat); //写数据字节
IIC_Stop(); //总线停止
DELAY_ms(5); //延时
}

//-----------------------------------------------------------------
// 从任意指定的地址读取一字节数据
//-----------------------------------------------------------------
CHAR8U AT24C02_RandomRead(CHAR8U Dev_AddrINT16U mem_addr)
{
CHAR8U dat = 0x00;
IIC_Start(); //总线启动
IIC_WriteByte(Dev_Addr | 0x00); //器件地址Dev_Addr
IIC_WriteByte(mem_addr); //内存地址mem_addr
IIC_Start(); //总线再次启动(准备变换数据方向)
IIC_WriteByte(Dev_Addr | 0x01); //器件地址Dev_Addr
dat = IIC_ReadByte(); //主机读取一字节
IIC_NAck(); //主机发送非应答位
IIC_Stop(); //总线停止
return dat; //返回读取的字节
}

//-----------------------------------------------------------------
// 从指定地址开始连续顺序写NB数据
//-----------------------------------------------------------------
void AT24C02_SequentialWrite(CHAR8U Dev_AddrINT16U mem_addrINT16U N)
{
INT16U i;
IIC_Start(); //总线启动
IIC_WriteByte(Dev_Addr | 0x00); //器件地址Dev_Addr
IIC_WriteByte(mem_addr); //内存地址mem_addr
for( i = 0; i != N - 1; i++) //主机循环写入N-1B并显示(主机输出从机读取)
{
IIC_WriteByte(TimingDateTime[i]); //写数据字节; //TimingDateTime 定时时间
}
IIC_WriteByte(TimingDateTime[i]); //写数据字节
IIC_Stop(); //总线停止
DELAY_ms(5); //延时
}

//-----------------------------------------------------------------
// 从指定地址开始连续顺序读取N

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4308  2016-04-20 18:33  IIC2.0\AT24C02.H.bak
     文件        4067  2016-04-20 19:11  IIC2.0\AT24C02.c
     文件        3040  2016-04-20 18:32  IIC2.0\AT24C02.c.bak
     文件        4364  2016-04-20 19:11  IIC2.0\AT24C02.h
     目录           0  2016-10-27 19:16  IIC2.0\

评论

共有 条评论