原标题:msp430读写24c512程序
*文件名: f169i2c.c
*整体描述:MSP430F169硬件IIC软件,字节方式,主方式
* IIC接口:P3.3=SCL,P3.1=SDA;(开漏输出)
* 相应寄存器:地址寄存器 I2COA 用于存放自身从地址(从方式时才有用)
* 地址寄存器 I2CSA 用于存放外围的从机地址(主方式时才有用)
* 控制寄存器 U0CTL 硬件I2C的设置、使能、模式等。
发送控制寄存器 I2CTCTL
* 数据控制寄存器 I2CDCTL 指示I2C总线的状态
*
* U0CTL -- RXDMAEN,TXDMAEN,I2C, XA, LISREN,SYNC,MST,I2CEN
* 0 0 1 0 0 1 1 1 (0x17)
* I2CTCTL --I2CWORD,I2CRM,I2CSSEL1,I2XSSEL0, I2CTRX,I2CSTB, I2CSTP, I2CSTT
* 0 1 1 0 * 0 * *
************************************************************/
#include
#include "fpgacode.h"
#define WR24C512
#define 1_1 (0x20)
#define LED1_0 (0xdf)
#define SDA_1 P3OUT |= BIT1 //串行数据线,SDA = 1
#define SDA_0 P3OUT &=~ BIT1 //SDA = 0
#define SCL_1 P3OUT |= BIT3 //串行时钟线,SCL = 1
#define SCL_0 P3OUT &=~ BIT3 //SCL = 0
#define SDADIR_IN P3DIR &=~ BIT1 //SDA,I/O口为输入
#define SDADIR_OUT P3DIR |= BIT1 //I/0口为输出
#define SDA_IN ((P3IN >> 1) & 0x01) //Read SDA
#define SCLDIR_IN P3DIR &=~ BIT3 //SCL,I/O口为输入
#define SCLDIR_OUT P3DIR |= BIT3 //I/0口为输出
#define SCL_IN ((P3IN >> 3) & 0x01) //Read SCL
#ifdef WR24C512
static int numi = 0; //Data Pointer
#else
static int numj = 0; //Data Pointer
#endif
#define I2CSLA 0x50
void I2c_Idle_Check(void)
{
while (I2CBUSY & I2CDCTL); // I2C ready? 在空闲状态:0,空闲;1:忙
}
void DelayTime10us(unsigned char n)
{
unsigned char i;
while(n--) // 5 cy