新闻中心

EEPW首页 > 手机与无线通信 > 牛人业话 > 例说单片机数据通信之模拟IIC通信

例说单片机数据通信之模拟IIC通信

作者:Liklon时间:2014-06-25来源:电子产品世界收藏

  void writeByte(unsigned char dat)

本文引用地址:http://www.eepw.com.cn/article/248808.htm

  {

  unsigned char i = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低时钟线,改变线的电平

  if(dat & 0x80) set();

  else clr();

  setSCL(); //SDA电平稳定后,拉高时钟线

  dat <<= 1;

  }

  clrSCL();

  }

  unsigned char readByte()

  {

  unsigned char i = 0,tmp = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低时钟线

  tmp <<= 1; //准备读取数据

  setSCL(); //拉高时钟线

  if(SDA) tmp |= 0x01;

  }

  clrSCL();

  return tmp;

  }

  AT24C02读写操作

  void writeAT24XX(unsigned char addr,unsigned char dat)

  {

  startbit(); //起始信号

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件内部地址

  respond();

  writeByte(dat); //数据

  respond();

  stopbit(); //停止

  }

  unsigned char readAT24XX(unsigned char addr)

  {

  unsigned char dat;

  startbit(); //起始信号

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件内部地址

  respond();

  startbit(); //起始信号

  writeByte(0xa1); //器件地址

  respond();

  dat = readByte(); //数据

  stopbit(); //停止

  return dat;

  }

  主函数部分内容以及程序运行效果:

  void main()

  {

  unsigned char dat;

  initUart();

  sendString("UART INIT OK!!!n"); //串口通信初始化

  sendString("write 0x05 --> addr 0x00 n");//写入5到期间内部地址0

  writeAT24XX(0x00,0x05); //写入数据

  sendString("read dat <-- addr 0x00 n"); //读出写入数据

  dat = readAT24XX(0x00); //读出数据

  sendString("dat-->"); //打印

  sendByte(dat + '0');

  while(1);

  }

模拟信号相关文章:什么是模拟信号


51单片机相关文章:51单片机教程


pic相关文章:pic是什么


单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理


数字通信相关文章:数字通信原理


通信相关文章:通信原理



上一页 1 2 下一页

关键词: IIC 单片机 SDA

评论


相关推荐

技术专区

关闭