资源简介
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\
- 上一篇:测绘作业扩展工具CAD2008
- 下一篇:中国流域分割矢量图层
评论
共有 条评论