机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
基于MSP430F449的数据存储和USB串行通信实现
基于MSP430F449的数据存储和USB串行通信实现
 更新时间:2008-8-19 13:26:11  点击数:96
【字体: 字体颜色
r />_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<8;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<8;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) & nbsp; {
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_AC
  • 上一篇: Keil软件仿真的串口调试技巧
  • 下一篇: C8051F005单片机的比例电磁铁控制技术
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1