⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c02.c

📁 msp430F435做的医疗器械,包括语音模块,知识源于网络
💻 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 + -