📄 main.c
字号:
//模拟IIC,采用P31,32口
//描述:利用微控设计网的MC430F14开发板上的MSP430单片机与AT24C02进行IIC模拟实验
//MSP430模拟IIC向AT24C02写入4个字节数据,然后读出4个字节.最后做数据校验.
//如果读出来的数据与写入的原数据相同,则D2-LED会亮.否则D2-LED不亮.
//本例程是一条很好的MSP430模拟IIC程序,可以移植到任何其它设计中.本人认为非常方便
//移植,所以特此写来共享给大家使用.如有任何问题,欢迎到微控技术论坛来讨论.
//编写:微控设计网 DC版主 日期:2007.9.
//编译环境:IAR EW430 V3.42A
//验证平台: www.microcontrol.cn MC430F44开发板 V1.0
//声明:此程序只供微控用户使用.在未得到DC版主的许可请勿将资料外公开和用于商业用途.
//******************************************************************************
#include "msp430x44x.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 0x00 //操作内部地址首址
//写入AT24C02数据表
unsigned char write_table[4]={'a','b','c','d'};
//读出AT24C02数据缓冲区
unsigned char read_Buff[4]={'x','x','x','x'};
unsigned char iic_check; //检查标志,可选的.
//******************************************************************************
//MSP430F14初始化
void init (void)
{
P1DIR |= BIT1; //LED输出
P1OUT &= ~BIT1; //关LED
}
//******************************************************************************
//软延时
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(800); //写入后,做一个适当的延时
//向AT24C02芯片读出4字字节数据
iic_check=IIC(read_Buff,Quantity,incept_add,(AT24_ADD|read));
//判别校验是否成功
if(!(data_check(write_table,read_Buff,Quantity)))
P1OUT |= BIT1; //LED亮则表示IIC总线写读操作成
LPM1; //最后进入低功耗模式1
}
//微控设计网的MC430F14实验板IIC总线实验程序结束,谢谢!
//******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -