基于MSP430F449的数据存储和USB串行通信实现
时间:07-31
来源:互联网
点击:
延时处理模块
void IIC_Delay(void)
{
_NOP();
_NOP();
_NOP();
}
启动I2C模块
void start_IIC(void) // 启动I2
{
P2OUT&=0xf9; //设置P2输出
P2DIR&=0XFD; //SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
P2DIR&=0XFB; //SCL=1 FB=1111,1011
P2DIR|=0X02; // SDA=0
P2DIR|=0X04; // SCL=0
}
停止I2C模块
void stop_IIC(void) //
{
P2DIR|=0X02;//SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
P2DIR&=0XFD;//SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送 “ 0”模块
void send_zero(void) //
{
P2DIR|=0X02;// SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送 1模块
void send_one(void) //
{
P2DIR&=0XFD;//SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送单字符数据
void send _char(unsigned char data_out) //
{
unsigned char i,tmp=0x80;
for(i=0;i
{
if((data_out & tmp)>0)
send_one();
else
send_zero();
tmp/=2;
}
}
读单字符数据
unsigned char read_char(void)
{
unsigned char i,tmp=0x80;
unsigned char data1=0;
for (i=0;i
{
P2DIR&=0XFD;//SDA=1, 11111101
IIC_Delay();//
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
if((P2IN&0x02)>0x00)
{
data1|=tmp;
}
P2DIR|=0X04;// SCL=0
IIC_Delay();
tmp/=2;
}
return data1;
}
检查应答信号模块
void iic_ACK(void)
{
ack_flag=0x00;
P2DIR&=0XFD;//SDA=1, FD=1111,1101
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
while((P2IN&BIT1)==BIT1);
P2DIR|=0X04;// SCL=0
IIC_Delay();
}
拒绝应答模块
void iic_NACK(void) {
P2DIR&=0XFD;//SDA=1,
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
IIC_Delay();
P2DIR|=0X02;// SDA=0
IIC_Delay();//
}
写连续数据模块
void WriteNbyte(unsigned char *p,unsigned int addr,unsigned char number)
{
start_IIC();
send_char(0xa2);
iic_ACK();
send_char(addr/256); //high address byte
iic_ACK();
send_char(addr%256);
iic_ACK();
do
{
send_char(*p);
p++;
iic_ACK();
}
while(--number);
stop_IIC();
delay(10);
}
发送应答模块:ACK (LOW)
void S_ACK(void)
{
P2DIR|=0X02;// SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
IIC_Delay();
}
void IIC_Delay(void)
{
_NOP();
_NOP();
_NOP();
}
启动I2C模块
void start_IIC(void) // 启动I2
{
P2OUT&=0xf9; //设置P2输出
P2DIR&=0XFD; //SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
P2DIR&=0XFB; //SCL=1 FB=1111,1011
P2DIR|=0X02; // SDA=0
P2DIR|=0X04; // SCL=0
}
停止I2C模块
void stop_IIC(void) //
{
P2DIR|=0X02;//SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
P2DIR&=0XFD;//SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送 “ 0”模块
void send_zero(void) //
{
P2DIR|=0X02;// SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送 1模块
void send_one(void) //
{
P2DIR&=0XFD;//SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
}
发送单字符数据
void send _char(unsigned char data_out) //
{
unsigned char i,tmp=0x80;
for(i=0;i
{
if((data_out & tmp)>0)
send_one();
else
send_zero();
tmp/=2;
}
}
读单字符数据
unsigned char read_char(void)
{
unsigned char i,tmp=0x80;
unsigned char data1=0;
for (i=0;i
{
P2DIR&=0XFD;//SDA=1, 11111101
IIC_Delay();//
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
if((P2IN&0x02)>0x00)
{
data1|=tmp;
}
P2DIR|=0X04;// SCL=0
IIC_Delay();
tmp/=2;
}
return data1;
}
检查应答信号模块
void iic_ACK(void)
{
ack_flag=0x00;
P2DIR&=0XFD;//SDA=1, FD=1111,1101
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
while((P2IN&BIT1)==BIT1);
P2DIR|=0X04;// SCL=0
IIC_Delay();
}
拒绝应答模块
void iic_NACK(void) {
P2DIR&=0XFD;//SDA=1,
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
IIC_Delay();
P2DIR|=0X02;// SDA=0
IIC_Delay();//
}
写连续数据模块
void WriteNbyte(unsigned char *p,unsigned int addr,unsigned char number)
{
start_IIC();
send_char(0xa2);
iic_ACK();
send_char(addr/256); //high address byte
iic_ACK();
send_char(addr%256);
iic_ACK();
do
{
send_char(*p);
p++;
iic_ACK();
}
while(--number);
stop_IIC();
delay(10);
}
发送应答模块:ACK (LOW)
void S_ACK(void)
{
P2DIR|=0X02;// SDA=0
IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011
IIC_Delay();
P2DIR|=0X04;// SCL=0
IIC_Delay();
}
MSP430 集成电路 单片机 C语言 总线 USB 电路 ADC 传感器 温度传感器 压力传感器 电阻 相关文章:
- 基于短信传输方式的无线工业模块设计(04-10)
- 基于MSP430单片机和nRF905的无线通信系统(06-18)
- 用MSP430实现的嵌入式因特网终端设计(06-18)
- 基于TCP/IP的浮标网络通信系统设计(04-22)
- ZigBee的msstatePAN协议栈移植(06-03)
- 基于MSP430单片机的光纤旁路保护器的实现(04-20)