MSP430 IIC总线程序

发布者:beta12最新更新时间:2018-01-30 来源: eefocus关键字:MSP430  IIC总线 手机看文章 扫描二维码
随时随地手机看文章

#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  


关键字:MSP430  IIC总线 引用地址:MSP430 IIC总线程序

上一篇:MSP430控制6963c驱动液晶
下一篇:MSP430F449时钟

推荐阅读最新更新时间:2024-03-16 15:53

MSP430定时器的PWM输出
定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。这里完成一个比较通用的PWM波形产生程序。 硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。它给开发人员提供了较多灵活的选择余地。当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。 MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA有三个模块,CCR0-CCR2;TB含有CC
[单片机]
<font color='red'>MSP430</font>定时器的PWM输出
MSP430F149的TIMERA定时中断理解
代码如下: //本平台 msp430f149 #include io430.h #include in430.h volatile unsigned char count = 0,flag = 0; void select_xt2(void){ unsigned char i; /*------选择系统主时钟为8MHz-------*/ BCSCTL1 &= ~XT2OFF; do{ IFG1 &= ~OFIFG; //清除晶振失败标志 for (i = 0xFF; i 0; i--); //等待8MHz晶体起振 }while ((IFG1
[单片机]
基于MSP430F413的新型智能水表的设计
针对传统水表落后产生的一系列问题,国家建设部提出了城镇居民住宅“三表出户”的要求。 所以目前国内的很多水表生产厂家都在进行产品新型化的探索,大部分采用单片机技术,智能水表系统的实用性研究己成为当前仪表行业的热点之一。本文介绍的就是一种基于MSP430F413单片机的智能水表的设计。 本论文以智能IC卡水表系统为研究对象,重点探讨了基于MSP430F413型超低功耗单片机在低功耗智能仪表上的应用与开发。论文首先提出利用IC卡技术智能水表系统的总体设计方案;设计了系统控制的硬件电路结构和研究了软件控制流程的实现,采用软硬件结合的方法,对系统的低功耗、抗干扰性设计及安全性问题作了一定的分析与研究。 MSP430F413简介 TI公
[单片机]
基于<font color='red'>MSP430</font>F413的新型智能水表的设计
MSP430时钟设置及应用总结
在MSP430单片机中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。 一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基本操作。 一个指令周期 = 1~6个机器周期,具体根据具体指令而定。 另外,指令长度只是一个存储单位,与时间没有必然的关系。 MSP430单片机的时钟模块主要包括: 三个时钟:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK 三个振荡器:低频时钟源LFXT1 、高频时钟源XT2 、数字控制RC振荡器DCO 而MSP430单片机工作所需时钟就是由这些振荡器振荡后经处理产生的。 (1)ACLK:是LFXT1CLK信号经1/2/4/8分频后得到的,
[单片机]
基于MSP430的无线传感器网络设计
引言   传感测试技术正朝着多功能化、微型化、智能化、网络化、无线化的方向发展。自组织无线传感器网络(Self Organizing Wireless Sensor Networks)作为新兴技术,是目前国外研究的热点,其在军事、环境、健康、家庭、商业、空间探索和灾难拯救等领域展现出广阔的应用前景。早在2003年美国自然科学基金委员会已经斥巨资来支持这方面的研究,并且出现了一些致力于无线传感器网络的公司,其中Crossbow公司已推出了Mica系列传感器网络产品。国内很多大学现已经开展相关领域的研究,但大部分工作仍处在自组织无线网络协议性能仿真和硬件节点小规模实验设计阶段。本文就国防科技大学传感器教研室开展可应用于环境监测方面无
[工业控制]
基于<font color='red'>MSP430</font>的无线传感器网络设计
IIC总线在LonWorks神经元芯片FT3150中的应用
  目前比较常用的串行总线有:IIC(Inter Integrated Circuit)总线、SPI(Serial Periphcral Interface)总线和Micro-wIRe总线等。其中,IIC总线是Philips公司于80年代推出的一种二线制总线,它通过一根串行数据线(SDA))和一根时钟线(SCL)在互连的器件间传输信息。这对具有有限个I/O引脚的神经元芯片来说,节约了I/O引脚开销,方便了系统进一步扩展。 LonWorks神经元芯片FT3150   LonWorks总线为用户提供了一个针对实际工程应用的神经元芯片--Neuron芯片。Neuron芯片高度集成,所需外部器件较少。它包含3个处理七层LonTalk协
[嵌入式]
uCOS-II在MSP430上的移植1——准备工作
学习uC/OS-II有一段时间了,下了上百兆的资料。网上可以找到很多移植好的工程,参考别人的,稍微修改下,编译调试通过了,用起来始终觉得不是很踏实,毕竟不知道别人修改了哪些地方。静心整理了下思路,决定自己动手,从最原始的文件修改,把uCOS-II移植到MSP430F169上。 一、准备工作 (1)μC/OS-II中文教程.CHM ——《嵌入式实时操作系统uC/OS-II(第2版)邵贝贝译》一书的电子版。也可在网上查找相关的电子文档。作为工具手册,在移植过程中碰到不理解的可以随时查看. (2)μC/OS-II操作系统的源代码,版本为V2.86。 官方下载地址: http://www.micrium.com/pro
[单片机]
基于MSP430的新型自报式水文遥测终端机设计
水文遥测系统通常由终端机、中继站和中心站三部分组成。由于终端机是用来直接测量雨量、水位等水文数据,是整个遥测系统信息的来源,故其设计成为整个遥测系统的关键。遥测终端机一般处于河流上游或者湖泊边缘,分布分散,维护起来很不方便,需要长期工作在无人值守的环境中,并且往往无交流电源提供,需要靠太阳能浮充和免维护蓄电池供电,因此在终端机的设计过程中低功耗和高可靠性尤为重要。 现有的遥测终端机通常采用MCS51微控制器作为控制芯片并配以较多的模拟电路和逻辑门电路,其设计复杂,功耗和可靠性难以得到保证,所以很有必要利用新型的性能更高的器件来对终端机重新设计。TI公司的MSP430系列集成了大量的外围部件,是低工作电压、超低功耗、高性能的微控
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved