⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于MSP430F149的iic的通信设计系统
💻 C
字号:
//MSP430单片机与AT24C02进行IIC模拟实验
//MSP430模拟IIC向AT24C02写入4个字节数据,然后读出4个字节.最后做数据校验.
//如果读出来的数据与写入的原数据相同,则D2-LED会亮.否则D2-LED不亮.

#include "msp430x14x.h"
#include "M430IICBUS.h"

//IIC总线操作成失标志
 #define error 0x01              //错误
 #define right 0x00              //正确

 #define AT24_ADD      0xA0      //24c02芯片地址          

 #define write          0x00     //写
 #define read           0x01     //读

 #define Quantity        4      //操作数量
 #define incept_add      0xaa   //操作内部地址首址
 

//写入AT24C02数据表
  unsigned char write_table[4]={0xaa,0x01,0x02,0x03};
//读出AT24C02数据缓冲区
 unsigned char read_Buff[4]={0x00,0x00,0x00,0x00}; 
 
 unsigned char iic_check;   //检查标志,可选的.
 
//******************************************************************************
//MSP430F14初始化
void init (void)
{
P1DIR = 0xff;
P1OUT = 0x00;
}

//******************************************************************************
//软延时
void delay(unsigned int n)
{unsigned int k;
 for(k=0;k<n;k++);
}

//******************************************************************************
//检验两组数据是否正确,如在检验数据中有一组不正确,则退出.
//*Data_REF参考值数组,*Data_CHK被检验数组,n检验数量
//并返回一个成败标志.
unsigned char data_check(unsigned char *Data_REF, unsigned char *Data_CHK, 
                         unsigned char n)
{unsigned char chk ;
 while(n) 
  {
   if(Data_REF[n-1]==Data_CHK[n-1])     //进行校对
    { chk = right;                      //正确
      n--;                              //下一位
    }
   else
    { chk = error;                      //校对有错
      continue;                         //马上退出
    }
  }
 return chk ;                           //返回校对成败标志.
}

//******************************************************************************
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;         //停止WDT
  
  init();                       //初始化
  
  //向AT24C02芯片写入4字节数据
  iic_check=IIC(write_table,Quantity,incept_add,(AT24_ADD|write));
  
  //此延时是很重要的
  delay(600);                 //写入后,做一个适当的延时,作为时间Twr
  
  //向AT24C02芯片读出4字字节数据
  iic_check=IIC(read_Buff,Quantity,incept_add,(AT24_ADD|read));

  //判别校验是否成功
  //if(!(data_check(write_table,read_Buff,Quantity)))
   // while(1)//测试
   //   P1OUT ^= BIT1;           //LED亮则表示IIC总线写读操作成
    P1OUT = read_Buff[0];
    //LPM1;                       //最后进入低功耗模式1
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -