微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430模拟IIC接口程序

MSP430模拟IIC接口程序

时间:11-22 来源:互联网 点击:
1-简介

MSP430单片机普通II模拟IIC接口程序范例。

2-程序例程

#include "MSP430x14x.h"

//P3.2 SCL

//P3.3 SDA

#define SDA_1 P3OUT |= BIT3 //SDA = 1

#define SDA_0 P3OUT &=~ BIT3 //SDA = 0

#define SCL_1 P3OUT |= BIT2 //SCL = 1

#define SCL_0 P3OUT &=~ BIT2 //SCL = 0

#define DIR_IN P3DIR &=~ BIT3; SDA_1//I/O口为输入

#define DIR_OUT P3DIR |= BIT3 //I/0口为输出

#define SDA_IN ((P3IN >> 3) & 0x01) //Read SDA

unsigned int a[50];

/
{
TempBit = 1;
}
else
{
TempBit = 0;
}
DIR_OUT;
TempData = (TempData < 1) | TempBit;
SCL_0;
}
Delay(5);
return(TempData);
}

/) && (i < 255))
{
i++;
}
DIR_OUT;
SCL_0;
Delay(5);
}

/)
{
unsigned char HighData = 0;
unsigned char LowData = 0;
unsigned int TempData = 0;
Start();
WriteByte(0xa0);
ReceiveAck();
WriteByte(unit);
ReceiveAck();
Start();
WriteByte(0xa1);
ReceiveAck();
LowData = ReadByte();
Acknowledge();
HighData = ReadByte();
Stop();
TempData = (HighData < 8) + LowData;
Delay(1000);
return(TempData);
}

/
{
unsigned char i;
unsigned char HighData = 0;
unsigned char LowData = 0;
unsigned int TempData = 0;
Start();
WriteByte(0xa0);
ReceiveAck();
WriteByte(unit);
ReceiveAck();
Start();
WriteByte(0xa1);
ReceiveAck();
for (i=0; i<49; i++)
{
LowData = ReadByte();
Acknowledge();
HighData = ReadByte();
Acknowledge();
a[i]= (HighData < 8) + LowData;
}
LowData = ReadByte();
Acknowledge();
HighData = ReadByte();
Stop();
a[49] = (HighData < 8) + LowData;
Delay(1000);
}

/, unsigned int WriteData)
{
unsigned char LowData = 0;
unsigned char HighData = 0;
LowData = (unsigned char)WriteData;
HighData = (unsigned char)(WriteData >> 8);
Start();
WriteByte(0xa0);
ReceiveAck();
WriteByte(unit);
ReceiveAck();
WriteByte(LowData);
ReceiveAck();
WriteByte(HighData);
ReceiveAck();
Stop();
Delay(2000);
}
//******************************************************************************

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top