avr_iic.txt

来自「实现IIC的基本通信,单片机工作在IIC工作在主机方式下,对从机读取数据及写入数」· 文本 代码 · 共 56 行

TXT
56
字号
avr单片机IIc总线编程

#define IIC_Start()          TWCR =(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
#define IIC_Stop()          TWCR =(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)
#define IIC_Wait()           while(!(TWCR&(1<<TWINT)))
#define IIC_NoneAck()   TWCR =(1<<TWINT)|(1<<TWEN)
#define IIC_Ack()           TWCR =(1<<TWINT)|(1<<TWEN)|(1<<TWEA)

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

  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工作在主机方式下,对从机读取数据及写入数据.已经调试通过.希望大家能够补充完善.
 
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?