历史上的今天
返回首页

历史上的今天

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

2018年01月30日 | MSP430 IIC总线程序

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  


推荐阅读

史海拾趣

DMC Tools公司的发展小趣事

随着全球对环保问题的日益关注,DMC Tools公司也积极响应号召,致力于绿色生产。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还积极推广绿色产品,帮助客户实现绿色生产。这种对环保的关注和投入不仅彰显了公司的社会责任感,也为公司赢得了良好的社会声誉。

Catalyst公司的发展小趣事

Catalyst公司在电子行业的初创期,以其独特的创新理念和前瞻性的技术布局,奠定了坚实的基础。公司创始团队由一群对电子行业充满热情的工程师和科学家组成,他们共同致力于研发高效、稳定的电子产品。通过不断的技术研发和市场调研,Catalyst成功推出了一系列具有竞争力的产品,逐步在市场中崭露头角。

HOPERF公司的发展小趣事

凭借卓越的产品性能和完善的解决方案,HOPERF的产品在多个领域得到了广泛应用。从户外运动、电子导航到工业测量、环境监测,再到医疗健康、智能家居等领域,HOPERF的产品几乎覆盖了人们生活的方方面面。公司不仅提供标准化的产品,还根据客户的实际需求提供个性化定制服务,极大地满足了市场的多样化需求。这种灵活多变的市场策略使得HOPERF在全球市场上迅速拓展,赢得了大量品牌客户的青睐和合作。

以上五个故事展示了HOPERF公司在电子行业中的发展历程和成就,充分体现了其在技术创新、产业链整合、全球化布局、质量控制以及市场拓展等方面的综合实力。

Bedford Opto公司的发展小趣事

近年来,电子行业经历了深刻的变革,新兴技术的不断涌现给Bedford Opto公司带来了前所未有的挑战。然而,公司凭借敏锐的市场洞察力和灵活的战略调整,成功应对了这些变革。通过加大研发投入,积极引进新技术,公司不断推出新产品,保持了市场竞争优势。

Exel Microelectronics Inc公司的发展小趣事

在XXXX年,Exel Microsystems Inc公司成功进入国际市场。公司凭借优质的产品和服务,赢得了国外客户的认可和信任。为了更好地服务国际市场,Exel还在多个国家和地区设立了分支机构和研发中心。这一市场拓展的成功不仅为公司带来了更多的商业机会,也提升了公司的国际知名度和影响力。

CONEC公司的发展小趣事

作为一家有远见的企业,CONEC不仅关注自身的经济效益,还积极履行社会责任。公司致力于推动电子行业的可持续发展,通过采用环保材料、优化生产工艺等方式降低生产过程中的环境影响。同时,CONEC还积极参与社会公益事业,支持教育、环保等领域的发展。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

请注意,以上故事仅为基于公开信息的推测和构建,可能并不完全准确反映CONEC公司的实际发展历程。如果您需要更详细和准确的信息,建议查阅CONEC公司的官方资料或相关新闻报道。

问答坊 | AI 解惑

德州仪器达芬奇五年之路七宗罪,嵌入式处理器架构之争决战2012(五)

正文:2009年春暖花开之时,TI果然毫不迟疑的推出了能支持H.264 720P30压缩的DM365达芬奇处理器,该处理器可以认为是DM355的完善版本,除了更新了ISP之外,DM365使用了和DM355相同的 ARM926E-JS内核,使用了DM355的MJCP硬件加速器,这个加速器可以 ...…

查看全部问答>

嵌入式怎么入门,哪条路比较好走?

这个问题很多人问过了,但还是要问一下,因为和他们情况不太相同。。。 我是一名二本大三的学生,计算机专业,学过C C++ 数据结构等,也用VC做过一些程序,现在想转到嵌入式软件方面,但已经快大四了,不知道时间够不够? 第二个问题,嵌入式软件 ...…

查看全部问答>

请问你们知道前边值和后面的值有什么关系吗?

在2440.h中这么写的 #define ADC_BASE      0xB1800000 // 0x58000000 而在map.a中是这样写的, DCD 0x91800000, 0x58000000,  1  ; A/D convert register 0x91800000: 虚拟地址 0x58000000: 物理地 ...…

查看全部问答>

读512M nand flash 的ID顺序颠倒的问题求助

读ID的代码如下 ;set timing value         ldr        r0,        =(7…

查看全部问答>

八位二进制数转BCD码

怎样将八位的二进制数转换成一字节的BCD码?…

查看全部问答>

只能看到扫描线而看不到波形

示波器正常,能看到到扫描线,但是观察被测信号时,只能看到扫描线而看不到波形,这是为什么呢?…

查看全部问答>

美科研人员制成超级电容,瞬间可完成充电

转载:http://www.powersystems.eet-china.com/ART_8800623749_2400002_NT_51116982.HTM 美国科研人员制成了一种新型超级电容(DLC,double-layer capacitors),只需200微秒的时间即可完成充电,并在交流电路的测试中获得了成功。(人类每次眨眼的时 ...…

查看全部问答>

松翰单片机sn8f2288 MSP接口做I2C通信求助

论坛里松翰单片机资料貌似很少。本人最近在用松翰单片机sn8f2288 的MSP(main series port)接口做I2C通信,从陀螺仪中读取数据,折腾了两个礼拜,还没弄出来。分析了很久我认为是MSP速率发生器设置的问题,资料中就是往MSPADR寄存器中写一个数据, ...…

查看全部问答>

仪表运放的带宽为什么总是不够用?

用了INA116,AD623,TL064等几个仪表运放,连接电路只是简单地接上电源、输入和ref,给输出端接个负载,然后测输出电压。G=1,也就是没有接电阻RG。输入大概是3V的峰峰值,信号发生器的50欧口。 这种电路在十几个kHz的时候工作的还挺好,可是频率 ...…

查看全部问答>

出售 奋斗 STM32 V2 新唐 NANO130

奋斗 STM32 V2 开发板(网络芯片位置留出,没有焊接网络芯片)   200包邮 新唐NANO 130                110包邮 全要 300包邮 QQ 744 252 519 [ 本帖最后由 upc_arm 于 20 ...…

查看全部问答>