历史上的今天
今天是: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
上一篇:MSP430两种串口升级方式对比
史海拾趣
|
我的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 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 ...… 查看全部问答> |




