📄 tmp175.c
字号:
/**************************************************************************************************
文件名:tmp175.c
编写者:zm
描述:tmp175。用于135、145、147、149。
版本变更:2008年8月22日 1.0
2008年11月 1.3
每次读写一个字节改为每次读写多字节
*****************************************************************************************************/
#include <msp430x14x.h>
#include "tmp175.h"
#include "IIC.h"
#include "general.h"
/***************************************************************************
向tmp175中写一个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175t(unsigned char psrc_data,unsigned char psrc_data1,unsigned char adr)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行写操作
if(TestAck()==1) //检验应答
return 1; //若应答错误,则退出函数,返回错误
Write8Bit(adr); //写对tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(psrc_data); //向tmp175中写数据
if(TestAck()==1)
return 1;
Write8Bit(psrc_data1); //向tmp175中写数据
if(TestAck()==1)
return 1;
Stop(); //停止IIC总线
return 0;
}
/***************************************************************************
向tmp175中写一个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175(unsigned char psrc_data,unsigned char adr)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行写操作
if(TestAck()==1) //检验应答
return 1; //若应答错误,则退出函数,返回错误
Write8Bit(adr); //写对tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(psrc_data); //向tmp175中写数据
if(TestAck()==1)
return 1;
Stop(); //停止IIC总线
return 0;
}
/***************************************************************************
向tmp175中写多个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
nbyte:写入的字节数
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175Seq(unsigned char* psrc_data,unsigned char adr,unsigned char nbyte)
{
for(;nbyte!=0;nbyte--)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行写操作
if(TestAck()==1) //检验应答
return 1; //若应答错误,则退出函数,返回错误
Write8Bit(adr); //写对tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(*psrc_data); //向tmp175中写数据
if(TestAck()==1)
return 1;
psrc_data++; //指向待写数据的指针加1
adr++; //对tmp175的操作地址加1
Stop(); //停止IIC总线
DelayMs(10); //写入延时
}
return 0;
}
/***************************************************************************
从tmp175中读一个字节
pdin_data:指向要保存读出数据的变量的指针
adr:tmp175中要读出数据的地址
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Readtmp175(unsigned char *pdin_data,unsigned char adr)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行写操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //写对tmp175操作的地址
if(TestAck()==1)
return 1;
Start(); //再次启动IIC总线
Write8Bit(R_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行读操作
if(TestAck()==1)
return 1;
*pdin_data=Read8Bit(); //从tmp175中读数据,存入pdin_data所指的存储器中
Ack(); //IIC无应答操作
pdin_data++;
*pdin_data=Read8Bit();
NoAck();
Stop(); //停止IIC总线
return 0;
}
/***************************************************************************
从tmp175读多个字节
pdin_data:指向要保存读出数据的数组的指针
adr:tmp175中要读出数据的首地址
nbyte:读出的字节数
返回值: 0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Readtmp175Seq(unsigned char *pdin_data,unsigned char adr,unsigned char nbyte)
{
Start(); //启动IIC总线
Write8Bit(W_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行写操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //写对tmp175操作的地址
if(TestAck()==1)
return 1;
Start(); //再次启动IIC总线
Write8Bit(R_DEVICE_ADR); //写tmp175的芯片地址以及确定下面执行读操作
if(TestAck()==1)
return 1;
while(nbyte!=1)
{
*pdin_data=Read8Bit(); //循环从tmp175中读数据,存入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 + -