×
单片机 > 单片机程序设计 > 详情

avr单片机IIc总线编程

发布时间:2020-06-04 发布时间:
|
#define IIC_Start()          TWCR =(1<#define IIC_Stop()          TWCR =(1< #define IIC_Wait()           while(!(TWCR&(1< #define IIC_NoneAck()   TWCR =(1< #define IIC_Ack()           TWCR =(1<

 

/*=========================================

  IicWrite(uchar ad,uchar da):ad=寄存器地址,da=数据;
  IicRead(uchar ad):           ad=寄存器地址
=========================================*/
void IicWrite(uchar ad,uchar da)
{
     IIC_Start();
     IIC_Wait();
     TWDR=0xA2;//从机地址
     IIC_Ack();
     IIC_Wait();
     TWDR=ad;
     IIC_Ack();
     IIC_Wait();
     TWDR=da;
     IIC_Ack();
     IIC_Wait();
     IIC_Stop();
}
uchar IicRead(uchar ad)
{
 unsigned char data;
 IIC_Start();
 IIC_Wait();
 TWDR = 0xA2;//从机地址
 IIC_Ack();
 IIC_Wait();
 TWDR = ad;
 IIC_Ack();
 IIC_Wait();
 
 IIC_Start();
 IIC_Wait(); 
 TWDR = 0xA3;
 IIC_Ack();
 IIC_Wait();
 IIC_NoneAck();
 IIC_Wait();
 data=TWDR; 
 IIC_Stop();
 return data;
}

单片机工作在IIC工作在主机方式下,对从机读取数据及写入数据.已经调试通过.希望大家能够补充完善.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址