MSP430 IIC 程序驱动代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/
开发平台;MSP430
IIC总线驱动代码
本人试用过,可以成功的调通
///////////////////////////////////////////////////////////
//iic.c
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define SCL_H P1OUT |= BIT2
#define SCL_L P1OUT &= ~BIT2
#define SDA_H P1OUT |= BIT3
#define SDA_L P1OUT &= ~BIT3
#define SDA_in P1DIR &= ~BIT3 //SDA改成输入模式#define SDA_out P1DIR |= BIT3 //SDA变回输出模式#define SDA_val P1IN&BIT3 //SDA的位值
#define TRUE 1
#define FALSE 0
/*******************************************
函数名称:delay
功能:延时约15us的时间
参数:无
返回值:无
********************************************/
void delay(void)
{
uchar i;
for(i = 0;i < 15;i++)
_NOP();
}
/*******************************************
函数名称:start
功能:完成IIC的起始条件操作
参数:无
返回值:无
********************************************/
void start(void)
{
SCL_H;
SDA_H;
delay();
SDA_L;
delay();
SCL_L;
delay();
}
/******************************************* 函数名称:stop
功能:完成IIC的终止条件操作
参数:无
返回值:无
********************************************/ void stop(void)
{
SDA_L;
delay();
SCL_H;
delay();
SDA_H;
delay();
}
/******************************************* 函数名称:mack
功能:完成IIC的主机应答操作
参数:无
返回值:无
********************************************/ void mack(void)
{
SDA_L;
_NOP(); _NOP();
SCL_H;
delay();
SCL_L;
_NOP();_NOP();
SDA_H;
delay();
}
/******************************************* 函数名称:mnack
功能:完成IIC的主机无应答操作
参数:无
返回值:无
********************************************/ void mnack(void)
{
SDA_H;
_NOP(); _NOP();
SCL_H;
delay();
SCL_L;
_NOP(); _NOP();
SDA_L;
delay();
}
/**********检查应答信号函数******************/ /*如果返回值为1则证明有应答信号,反之没有*/ /******************************************* 函数名称:check
功能:检查从机的应答操作
参数:无
返回值:从机是否有应答:1--有,0--无
********************************************/ uchar check(void)
{
uchar slaveack;
SDA_H;
_NOP(); _NOP();
SCL_H;
_NOP(); _NOP();
SDA_in;
_NOP(); _NOP();
slaveack = SDA_val; //读入SDA数值
SCL_L;
delay();
SDA_out;
if(slaveack) return FALSE;
else return TRUE;
}
/******************************************* 函数名称:write1
功能:向IIC总线发送一个1
参数:无
返回值:无
********************************************/