📄 24c02.c
字号:
/**************************************************************************************************
文件名:24c02.c
编写者:czhang
描述:24c02子程序。用于135、145、147、149。
版本变更:2003年10月11日 1.0
2004年11月 1.3
每次读写一个字节改为每次读写多字节
*****************************************************************************************************/
#include <msp430x14x.h>
#include "24c02.h"
#include "iic.h"
/***************************************************************************
向24c02中写多个字节
psrc_data:指向要写入数据数组的指针
adr:24c02中要写入数据的首地址
nbyte:写入的字节数
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Write24c02(unsigned char* psrc_data,unsigned char adr,unsigned char nbyte)
{
for(;nbyte!=0;nbyte--)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写24C02的芯片地址以及确定下面执行写操作
if(TestAck()==1) //检验应答
return 1; //若应答错误,则退出函数,返回错误
Write8Bit(adr); //写对24C02操作的地址
if(TestAck()==1)
return 1;
Write8Bit(*psrc_data); //向24C02中写数据
if(TestAck()==1)
return 1;
psrc_data++; //指向待写数据的指针加1
adr++; //对24C02的操作地址加1
Stop(); //停止IIC总线
DelayMs(10); //写入延时
}
return 0;
}
/***************************************************************************
从24c02中读一个字节
pdin_data:指向要保存读出数据的变量的指针
adr:24c02中要读出数据的地址
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Read24c02(unsigned char *pdin_data,unsigned char adr)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写24C02的芯片地址以及确定下面执行写操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //写对24C02操作的地址
if(TestAck()==1)
return 1;
Start(); //再次启动IIC总线
Write8Bit(R_DEVICE_ADR); //写24C02的芯片地址以及确定下面执行读操作
if(TestAck()==1)
return 1;
*pdin_data=Read8Bit(); //从24C02中读数据,存入pdin_data所指的存储器中
NoAck(); //IIC无应答操作
Stop(); //停止IIC总线
return 0;
}
/***************************************************************************
从24c02读多个字节
pdin_data:指向要保存读出数据的数组的指针
adr:24c02中要读出数据的首地址
nbyte:读出的字节数
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Read24c02Seq(unsigned char *pdin_data,unsigned char adr,unsigned char nbyte)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写24C02的芯片地址以及确定下面执行写操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //写对24C02操作的地址
if(TestAck()==1)
return 1;
Start(); //再次启动IIC总线
Write8Bit(R_DEVICE_ADR); //写24C02的芯片地址以及确定下面执行读操作
if(TestAck()==1)
return 1;
while(nbyte!=1)
{
*pdin_data=Read8Bit(); //循环从24C02中读数据,存入pdin_data所指的存储器中
Ack(); //IIC应答
pdin_data++; //指向存储读入数据的存储器指针加1
nbyte--; //剩余要读入的字节减1
};
*pdin_data=Read8Bit(); //读入最后一个字节
NoAck(); //IIC无应答操作
Stop();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -