MSP430 IIC 程序驱动代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

参数:无

返回值:无

********************************************/

相关文档
最新文档