新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 牛人業(yè)話 > 例說單片機(jī)數(shù)據(jù)通信之模擬IIC通信

例說單片機(jī)數(shù)據(jù)通信之模擬IIC通信

作者:Liklon 時(shí)間:2014-06-25 來源:電子產(chǎn)品世界 收藏

  void writeByte(unsigned char dat)

本文引用地址:http://m.butianyuan.cn/article/248808.htm

  {

  unsigned char i = 0;

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

  {

  clrSCL(); //拉低時(shí)鐘線,改變線的電平

  if(dat & 0x80) set();

  else clr();

  setSCL(); //SDA電平穩(wěn)定后,拉高時(shí)鐘線

  dat <<= 1;

  }

  clrSCL();

  }

  unsigned char readByte()

  {

  unsigned char i = 0,tmp = 0;

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

  {

  clrSCL(); //拉低時(shí)鐘線

  tmp <<= 1; //準(zhǔn)備讀取數(shù)據(jù)

  setSCL(); //拉高時(shí)鐘線

  if(SDA) tmp |= 0x01;

  }

  clrSCL();

  return tmp;

  }

  AT24C02讀寫操作

  void writeAT24XX(unsigned char addr,unsigned char dat)

  {

  startbit(); //起始信號(hào)

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

  respond();

  writeByte(addr); //器件內(nèi)部地址

  respond();

  writeByte(dat); //數(shù)據(jù)

  respond();

  stopbit(); //停止

  }

  unsigned char readAT24XX(unsigned char addr)

  {

  unsigned char dat;

  startbit(); //起始信號(hào)

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

  respond();

  writeByte(addr); //器件內(nèi)部地址

  respond();

  startbit(); //起始信號(hào)

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

  respond();

  dat = readByte(); //數(shù)據(jù)

  stopbit(); //停止

  return dat;

  }

  主函數(shù)部分內(nèi)容以及程序運(yùn)行效果:

  void main()

  {

  unsigned char dat;

  initUart();

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

  sendString("write 0x05 --> addr 0x00 n");//寫入5到期間內(nèi)部地址0

  writeAT24XX(0x00,0x05); //寫入數(shù)據(jù)

  sendString("read dat <-- addr 0x00 n"); //讀出寫入數(shù)據(jù)

  dat = readAT24XX(0x00); //讀出數(shù)據(jù)

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

  sendByte(dat + '0');

  while(1);

  }

模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)


51單片機(jī)相關(guān)文章:51單片機(jī)教程


pic相關(guān)文章:pic是什么


單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理


數(shù)字通信相關(guān)文章:數(shù)字通信原理


通信相關(guān)文章:通信原理



上一頁 1 2 下一頁

關(guān)鍵詞: IIC 單片機(jī) SDA

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉