历史上的今天
返回首页

历史上的今天

今天是:2025年04月20日(星期日)

正在发生

2021年04月20日 | MSP430单片机对AT24C64的读写操作子程序

2021-04-20 来源:eefocus

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


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


推荐阅读

史海拾趣

埃派克森微电子(Apexone)公司的发展小趣事

埃派克森微电子的创立可追溯到2002年,由高勇回国并带领一支团队创立。作为一家初创公司,埃派克森在创立初期就明确了以模拟系统级芯片为突破口的发展战略。通过不断的研发和创新,埃派克森成功开发了多款具有竞争力的芯片产品,逐渐在亚太与国际市场崭露头角。这一阶段,公司的创新精神和坚持不懈的努力为后来的发展奠定了坚实基础。

国盛科技(BOCHEN)公司的发展小趣事

国盛科技(BOCHEN)的前身是成都国正电子有限责任公司,由周正军先生于1999年创立,初期便致力于电子元器件的制造。面对当时行业内的技术壁垒和专利限制,国盛科技坚持以创新驱动,不断加大研发投入,逐渐在电子元器件领域站稳脚跟。这一时期,公司通过引进和培养核心技术人员,逐步建立起一支具备国内一流研发水平的团队,为后续的快速发展奠定了坚实基础。

Analogix Semiconductor公司的发展小趣事

国盛科技在技术创新方面取得了显著成果。截至目前,公司已累计取得8项发明专利、30项新型实用型专利,并成功转化了19项高新技术产品和知识产权成果。这些专利和成果的取得,不仅展示了国盛科技在电子元器件领域的研发实力,也为公司的持续发展提供了有力支撑。

Data Device Corporation公司的发展小趣事

为了进一步扩大市场份额,DDC开始积极开拓国际市场。通过参加国际展会、与海外客户建立合作关系等方式,DDC逐渐在国际市场上树立了良好的品牌形象。同时,DDC还针对不同国家和地区的市场需求,推出了定制化的产品解决方案。这些举措使得DDC在国际市场上的影响力逐渐增强,为公司的发展注入了新的动力。

宜源科技(ETERNAL)公司的发展小趣事

面对日益严峻的环境问题,宜源科技公司积极响应国家环保政策,致力于绿色环保和可持续发展。公司采用先进的生产工艺和设备,减少生产过程中的污染排放。同时,宜源科技还积极推动绿色产品的研发和推广,为客户提供更加环保、节能的电子产品解决方案。这些努力不仅有助于保护环境,也为公司的可持续发展奠定了基础。

ETAL公司的发展小趣事

作为一家有社会责任感的企业,ETAL始终关注社会公益事业。公司积极参与各种慈善活动和社会捐赠项目,为贫困地区的教育事业、环保事业等提供了力所能及的帮助。此外,ETAL还定期组织员工参与志愿服务活动,通过实际行动传递正能量和爱心。这些公益事业不仅提升了公司的社会形象,也增强了员工的凝聚力和向心力。

问答坊 | AI 解惑

打印机的驱动

大家知道一般打印机厂家提供wince的驱动吗? 我们公司samsung的打印机比较多,记得NEC给大的用户做过wince驱动的。…

查看全部问答>

欢迎加入ARMQQ交流群36243065

欢迎加入ARMQQ交流群36243065…

查看全部问答>

请教一下兼容的问题!!!!!!!!!!!

用windows API(vc6)写的串口程序和用控件写的串口程序在wince .net 4.2 下能直接运行吗? …

查看全部问答>

PDA程序部署后出现异常 提示没有sqlceme3.0链接库 请大家帮忙解决

我的程序部署后会出现如题标题的问题 请大家帮忙 …

查看全部问答>

用AT命令能查看GSM模块的SIM号吗?

GSM模块的SIM卡停机了,想知道它的号用什么方法呢?…

查看全部问答>

新手关于sd卡的一个问题,

我的arm开发板是2410的, 用了三星提供的sd卡驱动,我的kernel是2.6.14的内核.现在能识别1G的sd卡,能读能写.但是写的速度真的是超级慢,apache+cgi+sqlite都在sd卡上,我用cgi程序给sqlite写一条数据要等三四秒钟才能结束.请问怎么改动才能提高sd卡的写 ...…

查看全部问答>

紧急求助:如何提高wince下usb设备bulk传输的速度?

现在遇到一个问题:在wince下为一个usb设备写它的驱动,采用bulk传输,功能已经完成.但是bulk传输的速度太慢,请问在wince下如何提高传输速度呢?谢谢!…

查看全部问答>

串口通信问题!!!!

  #include   #define  COUNT  10  //定义发送缓冲区大小   #define  NODE—ADDR 64 //定义目的节点地址   unsiged char buffer[COUNT];//定义发送缓冲区 &n ...…

查看全部问答>

【低功耗】xilinx培训资料2010之Powering

Xilinx 培训资料2010之 Powering Powering Virtex®-6 and Spartan®-6 FPGAs 1.Xilinx® Spartan-6 and Virtex-6 Power Supply Requirements 2.Power System Design for FPGAs– Static and Dynamic Performance– Poin ...…

查看全部问答>

TI 9B96提供的AES加解密源代码

这是LM3S9B96光盘里提供的AES加解密代码,有需要的童鞋可以参考…

查看全部问答>