MSP430单片机对AT24C64的读写操作子程序

来源:本站
导读:目前正在解读《MSP430单片机对AT24C64的读写操作子程序》的相关信息,《MSP430单片机对AT24C64的读写操作子程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MSP430单片机对AT24C64的读写操作子程序》的详细说明。
简介:MSP430单片机对AT24C64的读写操作子程序

/*-----------------------------------

MSP430单片机对AT24C64的读写操作子程序

来源:晖创电子网www.schuitron.comMSP430程序

---------------------------------------*/

#ifndef_I2C_H

#define_I2C_H

#defineSDA_1P4OUT|=0x02//SDA=1

#defineSDA_0P4OUT&=~0x02//SDA=0

#defineSCL_1P4OUT|=0x01//SCL=1

#defineSCL_0P4OUT&=~0x01//SCL=0

#defineSDA_INP4DIR&=~0x02;//I/O口为输入

#defineSDA_OUTP4DIR|=0x02//I/0口为输出

#defineJ_SDA_1_or_0(P4IN&0x02)==0x02

/*--------------------------------------------

以下为24C64读写子函数

DELAY函数程序

功能:延时子程序

-----------------------------------------------*/

statICvoidDelay(unsignedintn)

{

while(n!=0)

{n--;}

}

//=========================================

//START函数程序

//功能:开始闪存操作

//==========================================

voidStart(void)

{

SDA_OUT;

SDA_1;

Delay(10);

SCL_1;

Delay(10);

SDA_0;

Delay(10);

SCL_0;

Delay(10);

}

//=========================================

//STOP函数程序

//功能:停止闪存操作

//==========================================

voidStop(void)

{

SDA_0;

Delay(10);

SCL_1;

Delay(10);

SDA_1;

Delay(10);

}

voidTX_Byte(unsignedcharWritEDAta)

{

unsignedchari,j;

j=WriteData;

SDA_OUT;

for(i=0;i<8;i++)

{

if((j&0x80)==0)

{SDA_0;}

else

{SDA_1;}

j<<=1;

Delay(10);

SCL_1;

Delay(10);

SCL_0;

Delay(10);

}

}

unsignedcharRX_Byte(void)

{

unsignedchari;

unsignedcharTempData=0;

SDA_IN;

for(i=0;i<8;i++)

{

Delay(10);

SCL_1;

Delay(10);

TempData<<=1;

if(J_SDA_1_or_0)

{TempData++;}

SCL_0;

Delay(10);

}

SDA_OUT;

return(TempData);

}

//=========================================

//ACK函数程序

//功能:挂高电平表示闪存时钟信号

//==========================================

voidReceiveAck(void)

{

SDA_IN;

SCL_1;

Delay(10);

while(J_SDA_1_or_0)

{}

SCL_0;

SDA_OUT;

Delay(10);

}

unsignedcharReadWord(unsignedlongintunit/*address*/)

{

unsignedcharLowAdd=0;

unsignedcharHighAdd=0;

unsignedcharTempData=0;

LowAdd=(unsignedchar)unit;

HighAdd=(unsignedchar)(unit>>8);

SDA_OUT;

Start();

TX_Byte(0xa0);

ReceiveAck();

TX_Byte(HighAdd);

ReceiveAck();

TX_Byte(LowAdd);

ReceiveAck();

Start();

TX_Byte(0xa1);

ReceiveAck();

TempData=RX_Byte();

Stop();

Delay(8000);

return(TempData);

}

voidWriteWord(unsignedlongintunit/*address*/,unsignedcharWriteData)

{

unsignedcharLowAdd=0;

unsignedcharHighAdd=0;

LowAdd=(unsignedchar)unit;

HighAdd=(unsignedchar)(unit>>8);

Start();

TX_Byte(0xa0);

ReceiveAck();

TX_Byte(HighAdd);

ReceiveAck();

TX_Byte(LowAdd);

ReceiveAck();

TX_Byte(WriteData);

ReceiveAck();

Stop();

Delay(8000);

}

#endif

提醒:《MSP430单片机对AT24C64的读写操作子程序》最后刷新时间 2024-03-14 01:13:48,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MSP430单片机对AT24C64的读写操作子程序》该内容的真实性请自行鉴别。