?? tmp175.c
字號(hào):
/**************************************************************************************************
文件名:tmp175.c
編寫者:zm
描述:tmp175。用于135、145、147、149。
版本變更:2008年8月22日 1.0
2008年11月 1.3
每次讀寫一個(gè)字節(jié)改為每次讀寫多字節(jié)
*****************************************************************************************************/
#include <msp430x14x.h>
#include "tmp175.h"
#include "IIC.h"
#include "general.h"
/***************************************************************************
向tmp175中寫一個(gè)字節(jié)
psrc_data:指向要寫入數(shù)據(jù)數(shù)組的指針
adr:tmp175中要寫入數(shù)據(jù)的首地址
返回值: 0:執(zhí)行完畢;1:執(zhí)行出現(xiàn)錯(cuò)誤
***************************************************************************/
unsigned char Writetmp175t(unsigned char psrc_data,unsigned char psrc_data1,unsigned char adr)
{
Start(); //啟動(dòng)IIC總線
Write8Bit(W_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行寫操作
if(TestAck()==1) //檢驗(yàn)應(yīng)答
return 1; //若應(yīng)答錯(cuò)誤,則退出函數(shù),返回錯(cuò)誤
Write8Bit(adr); //寫對(duì)tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(psrc_data); //向tmp175中寫數(shù)據(jù)
if(TestAck()==1)
return 1;
Write8Bit(psrc_data1); //向tmp175中寫數(shù)據(jù)
if(TestAck()==1)
return 1;
Stop(); //停止IIC總線
return 0;
}
/***************************************************************************
向tmp175中寫一個(gè)字節(jié)
psrc_data:指向要寫入數(shù)據(jù)數(shù)組的指針
adr:tmp175中要寫入數(shù)據(jù)的首地址
返回值: 0:執(zhí)行完畢;1:執(zhí)行出現(xiàn)錯(cuò)誤
***************************************************************************/
unsigned char Writetmp175(unsigned char psrc_data,unsigned char adr)
{
Start(); //啟動(dòng)IIC總線
Write8Bit(W_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行寫操作
if(TestAck()==1) //檢驗(yàn)應(yīng)答
return 1; //若應(yīng)答錯(cuò)誤,則退出函數(shù),返回錯(cuò)誤
Write8Bit(adr); //寫對(duì)tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(psrc_data); //向tmp175中寫數(shù)據(jù)
if(TestAck()==1)
return 1;
Stop(); //停止IIC總線
return 0;
}
/***************************************************************************
向tmp175中寫多個(gè)字節(jié)
psrc_data:指向要寫入數(shù)據(jù)數(shù)組的指針
adr:tmp175中要寫入數(shù)據(jù)的首地址
nbyte:寫入的字節(jié)數(shù)
返回值: 0:執(zhí)行完畢;1:執(zhí)行出現(xiàn)錯(cuò)誤
***************************************************************************/
unsigned char Writetmp175Seq(unsigned char* psrc_data,unsigned char adr,unsigned char nbyte)
{
for(;nbyte!=0;nbyte--)
{
Start(); //啟動(dòng)IIC總線
Write8Bit(W_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行寫操作
if(TestAck()==1) //檢驗(yàn)應(yīng)答
return 1; //若應(yīng)答錯(cuò)誤,則退出函數(shù),返回錯(cuò)誤
Write8Bit(adr); //寫對(duì)tmp175操作的地址
if(TestAck()==1)
return 1;
Write8Bit(*psrc_data); //向tmp175中寫數(shù)據(jù)
if(TestAck()==1)
return 1;
psrc_data++; //指向待寫數(shù)據(jù)的指針加1
adr++; //對(duì)tmp175的操作地址加1
Stop(); //停止IIC總線
DelayMs(10); //寫入延時(shí)
}
return 0;
}
/***************************************************************************
從tmp175中讀一個(gè)字節(jié)
pdin_data:指向要保存讀出數(shù)據(jù)的變量的指針
adr:tmp175中要讀出數(shù)據(jù)的地址
返回值: 0:執(zhí)行完畢;1:執(zhí)行出現(xiàn)錯(cuò)誤
***************************************************************************/
unsigned char Readtmp175(unsigned char *pdin_data,unsigned char adr)
{
Start(); //啟動(dòng)IIC總線
Write8Bit(W_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行寫操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //寫對(duì)tmp175操作的地址
if(TestAck()==1)
return 1;
Start(); //再次啟動(dòng)IIC總線
Write8Bit(R_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行讀操作
if(TestAck()==1)
return 1;
*pdin_data=Read8Bit(); //從tmp175中讀數(shù)據(jù),存入pdin_data所指的存儲(chǔ)器中
Ack(); //IIC無(wú)應(yīng)答操作
pdin_data++;
*pdin_data=Read8Bit();
NoAck();
Stop(); //停止IIC總線
return 0;
}
/***************************************************************************
從tmp175讀多個(gè)字節(jié)
pdin_data:指向要保存讀出數(shù)據(jù)的數(shù)組的指針
adr:tmp175中要讀出數(shù)據(jù)的首地址
nbyte:讀出的字節(jié)數(shù)
返回值: 0:執(zhí)行完畢;1:執(zhí)行出現(xiàn)錯(cuò)誤
***************************************************************************/
unsigned char Readtmp175Seq(unsigned char *pdin_data,unsigned char adr,unsigned char nbyte)
{
Start(); //啟動(dòng)IIC總線
Write8Bit(W_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行寫操作
if(TestAck()==1)
return 1;
Write8Bit(adr); //寫對(duì)tmp175操作的地址
if(TestAck()==1)
return 1;
Start(); //再次啟動(dòng)IIC總線
Write8Bit(R_DEVICE_ADR); //寫tmp175的芯片地址以及確定下面執(zhí)行讀操作
if(TestAck()==1)
return 1;
while(nbyte!=1)
{
*pdin_data=Read8Bit(); //循環(huán)從tmp175中讀數(shù)據(jù),存入pdin_data所指的存儲(chǔ)器中
Ack(); //IIC應(yīng)答
pdin_data++; //指向存儲(chǔ)讀入數(shù)據(jù)的存儲(chǔ)器指針加1
nbyte--; //剩余要讀入的字節(jié)減1
};
*pdin_data=Read8Bit(); //讀入最后一個(gè)字節(jié)
NoAck(); //IIC無(wú)應(yīng)答操作
Stop();
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -