MSP430非模拟IIC总线控制程序

IIC.h
void Init_IIC(void);
void EEPROM_ByteWrite(unsigned char nAddr,unsigned char nVal);
unsigned char EEPROM_RandomRead(unsigned char nAddr);
unsigned char EEPROM_CurrentAddressRead(void);
void EEPROM_AckPolling(void);
void Init_CLK(void);
void Init_IIC_Port(void);
Main.C
/*******************************************
IIC for AT24c16 OR AT24CXXX 系列
只要控制好IICRM IICSTP IICSTT 其硬件会自动完成
SCL SDA的一系列时序 只要注意各个发送与接收的控制标志位.
******************************************/
#include
#include "IIC.h"
volatile unsigned char Data[6];
void main(void)
{
//volatile unsigned char Data[6];
//停止看门狗
WDTCTL = WDTPW+WDTHOLD;
//初始化端口
Init_IIC_Port();
//初始化时钟
Init_CLK();
//I2C初始化
Init_IIC(); //置传输方式及控制方式
//打开中断
_EINT();
//写入数据
EEPROM_ByteWrite(0x0000,0x12);
//等待写操作完成
EEPROM_AckPolling();
//写入数据
EEPROM_ByteWrite(0x0001,0x34);
//等待写操作完成
EEPROM_AckPolling();
//写入数据
EEPROM_ByteWrite(0x0002,0x56);
//等待写操作完成
EEPROM_AckPolling();
//写入数据
EEPROM_ByteWrite(0x0003,0x78);
//等待写操作完成
EEPROM_AckPolling();
//写入数据
EEPROM_ByteWrite(0x0004,0x9A);
//等待写操作完成
EEPROM_AckPolling();
//写入数据
EEPROM_ByteWrite(0x0005,0xBC);
//等待写操作完成
EEPROM_AckPolling();
//读出数据,随机读
Data[0] = EEPROM_RandomRead(0x0000); //地址自动加1
//读出数据,当前地址读
Data[1] = EEPROM_CurrentAddressRead();
//读出数据,当前地址读
Data[2] = EEPROM_CurrentAddressRead();
//读出数据,当前地址读
Data[3] = EEPROM_CurrentAddressRead();
//读出数据,当前地址读
Data[4] = EEPROM_CurrentAddressRead();
//读出数据,当前地址读
Data[5] = EEPROM_CurrentAddressRead();
}
评论