历史上的今天
返回首页

历史上的今天

今天是:2025年01月30日(星期四)

2018年01月30日 | MSP430 24C64控制程序

2018-01-30 来源:eefocus

#ifndef _I2C_H 
#define _I2C_H 

#define SDA_1       P4OUT|=0x02               //SDA = 1 

#define SDA_0       P4OUT&=~0x02              //SDA = 0 
#define SCL_1       P4OUT|=0x01               //SCL = 1 
#define SCL_0       P4OUT&=~0x01              //SCL = 0 
#define SDA_IN      P4DIR&=~0x02;             //I/O口为输入 
#define SDA_OUT     P4DIR|=0x02               //I/0口为输出 
#define J_SDA_1_or_0   (P4IN&0x02)==0x02 
//-------------------------------------------- 
//--------以下为24C64读写子函数 
//DELAY 函数程序//功能:延时子程序 
//========================================== 
statIC void Delay(unsigned int n) 

while(n!=0) 
{n--;} 

//========================================= 
//START 函数程序 
//功能:开始闪存操作 
//========================================== 
void Start(void) 

  SDA_OUT; 
  SDA_1; 
  Delay(10); 
  SCL_1; 
  Delay(10); 
  SDA_0; 
  Delay(10); 
  SCL_0; 
  Delay(10); 


//========================================= 
//STOP 函数程序 
//功能:停止闪存操作 
//========================================== 
void Stop(void) 

  SDA_0; 
  Delay(10); 
  SCL_1; 
  Delay(10); 
  SDA_1; 
  Delay(10); 




void TX_Byte(unsigned char WritEDAta) 

  unsigned char i,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); 
  } 




unsigned char RX_Byte(void) 

  unsigned char i; 
  unsigned char TempData = 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 函数程序 
//功能:挂高电平表示闪存时钟信号 
//========================================== 
void ReceiveAck(void) 

  SDA_IN; 
  SCL_1; 
  Delay(10); 
  while (J_SDA_1_or_0) 
  {  } 
  SCL_0; 
  SDA_OUT; 
  Delay(10); 




unsigned char ReadWord(unsigned long int unit/*address*/) 

  unsigned char LowAdd  = 0; 
  unsigned char HighAdd = 0; 
  unsigned char  TempData = 0; 
  LowAdd  = (unsigned char)unit; 
  HighAdd = (unsigned char)(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); 



void WriteWord(unsigned long int unit/*address*/, unsigned char WriteData) 

  unsigned char LowAdd  = 0; 
  unsigned char HighAdd = 0; 
  LowAdd  = (unsigned char)unit; 
  HighAdd = (unsigned char)(unit >> 8); 
  Start(); 
  TX_Byte(0xa0); 
  ReceiveAck(); 
  TX_Byte(HighAdd); 
  ReceiveAck(); 
  TX_Byte(LowAdd); 
  ReceiveAck(); 
  TX_Byte(WriteData); 
  ReceiveAck(); 
  Stop(); 
  Delay(8000); 


#endif  


推荐阅读

史海拾趣

ARCOLECTRICSWITCHES公司的发展小趣事

在技术进步的基础上,ARCOLECTRIC SWITCHES公司积极拓展国内外市场。公司通过与各大电子厂商建立合作关系,将产品广泛应用于家电、通讯、汽车等多个领域。同时,公司注重品牌建设,通过广告宣传和市场推广活动提升品牌知名度和美誉度。这些努力使得ARCOLECTRIC SWITCHES公司的市场份额逐年增长,品牌影响力不断扩大。

AB Connectors Ltd公司的发展小趣事

在快速发展的过程中,AB Connectors Ltd始终将品质管理放在首位。公司建立了完善的质量管理体系,从原材料采购、生产加工到产品出厂检验等各个环节都实行严格的质量控制。此外,公司还引进了先进的生产设备和检测技术,不断提高产品的精度和稳定性。这些措施有效提升了产品的品质水平,赢得了客户的信任和好评。

Centellax Inc公司的发展小趣事

为了确保产品质量和客户满意度,Centellax建立了完善的质量管理体系。公司从原材料采购、生产制造到产品销售等各个环节都严格把控质量,确保产品性能稳定可靠。

同时,Centellax还引入了国际先进的质量管理理念和方法,不断提升员工的质量意识和技能水平。通过持续改进和优化生产流程,降低生产成本,提高产品竞争力。此外,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。

Asia Pacific Microsystems Inc公司的发展小趣事

APM公司由一群热衷于微电子技术的专家在亚太地区创立。初创时期,公司面临着资金紧张、市场竞争激烈以及技术瓶颈等多重挑战。然而,APM凭借其团队对技术的深刻理解和对市场的敏锐洞察,成功开发出一款具有竞争力的微控制器产品,迅速在市场中占据了一席之地。这款产品不仅性能稳定,而且价格适中,满足了当时市场对低成本、高性能微控制器的迫切需求。

中移物联网(Chinamobile)公司的发展小趣事

中移物联网自2012年成立以来,便致力于物联网专用网络的建设。根据中国移动的整体战略布局,公司开发并运营了物联网连接管理平台OneLink和物联网应用开放平台OneNET,为各行业提供稳定、高效的物联网连接服务。这些平台的建立,不仅满足了市场对于物联网连接的需求,也为公司后续业务的拓展奠定了坚实基础。

Cellergy公司的发展小趣事

Cellergy公司一直注重创新研发,不断推出新产品以满足市场需求。在一次重要的科技展览会上,Cellergy公司展示了一款全新的超级电容器。这款电容器采用了先进的材料和工艺,具有更高的能量密度和更长的使用寿命。这一创新产品引起了广泛关注,为Cellergy公司赢得了众多客户的青睐。

问答坊 | AI 解惑

DSP与慢速设备接口的实现

DSP是一种高性能的数字信号处理器。由于其具有快速的计算能力和强大的信息处理能力,因此被广泛地应用到工业自动化、国防科研等领域中。与常规单片机相比,DSP的内部结构和时序发生了很大的变化。所以单片机适用的接口芯片,DSP并不一定适用。对于非常 ...…

查看全部问答>

低功率、高性价比、高性能的S3C6400/北京大扬

APDK6400开发板简介 APDK6400是基于SAMSUNG的16/32位RSIC微处理器S3C6400X的一款开发平台,S3C6400X是基于ARM1176JZF-S核的用于手持、移动等终端设备的通用处理器。 S3C6400是一款低功率、高性价比、高性能的用于移动电话和通用处理RSIC处理器。 ...…

查看全部问答>

WINCE5.0找不到应用程序(或它的某一个组件)的问题,宇龙酷派7360手机

我做了一个程序,是用在宇龙酷派7360手机上。已经使用了宇龙公司提供的SDK开发。但是放到手机上运行的时候仍然提示:“找不到“Lemon”(或它的某一个组件)。请确认路径和文件名正确并且所需要的库全部可用”。 我用dumpbin看了一下,我的程序使用 ...…

查看全部问答>

各位大侠:在嵌入式机上建立SQL数据库的具体方法?

请教各位大侠,在嵌入式机上建立SQL数据库的具体方法是什么样的呢?我知道在PC机上用SQL SERVER 2000 在查询分析器里面建立,可是又该怎么应用SQL FOR CE呢?在哪里编程?还是通过PC机移植? 毕设有这方面的内容,要求在嵌入式系统建立一个数据库 ...…

查看全部问答>

PB打补丁后烧录wince无法进入系统,停留在logo画面

为了能在wince中加入compact framework 2.0组件,下载了platformbuilder2007全年补丁,随即产生了这个问题:第一次烧录完成后能进入wince,跳针接回nand位置后重启无法进入wince,我使用的是QQ2440v3板及原配的BSP。看来又是个大难题…

查看全部问答>

编译出错,就是不知道问题在哪?希望得到帮助,谢谢!

我用vc++编了一个板卡的数据采集接口程序,其中用到了winio控件,我按照使用说明一步步操作,可是就是编译不成功,请帮我看看是怎么回事,谢谢了!程序如下: #include #include #include #include \"winio.h\" void main() {   &n ...…

查看全部问答>

读ADC温度传感器和VERF+的数据有问题

读通道 ADC_16 ADC_17注意: 必须设置TSVREFE位以激活内部通道:ADCx_IN16(温度传感器)和ADCx_IN17(VREFINT)的转换。通道使能。  数字不对。如图  [2][3]是温度。[4][5][6] [7]是VERF+万利的板 ...…

查看全部问答>

AD6.9稳定版

http://d.1tpan.com/tp0645286067…

查看全部问答>

CAN通讯学习?

最近在学习CAN通信,感觉不知道怎么学习,大侠们有没有好的建议或者参考资料??谢谢啦…

查看全部问答>

谈谈月生活开支!!

1岁半小孩奶粉4罐半,每罐198元 再买点零食月1000左右,房租水电450左右,老婆带小孩要吃饭,柴米油盐,哦,不对,是汽米油盐和平时零用再加上我的烟酒和平时零用至少1500! 看看余下的, 房子这辈子租算了………

查看全部问答>