⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c._c

📁 使用AVR做的IIC主模式下的程序
💻 _C
字号:
#include<iom128v.h>
#include<iom128v.h>
#define START 0x08
#define restart 0x10
#define MT_SLA_ACK 0x18
#define MT_DATA_ACK 0x28
#define MR_SLA_ACK  0x40 
#define MR_DATA_NOACK 0x58  
#define wr_device_adress 0xa0;
#define rd_device_adress 0xa1;
#define start TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTA)
#define wait { while(!(TWCR&(1<<TWINT)));}
#define stop TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
#define write8bit(c){TWDR=c;TWCR=(1<<TWINT)|(1<<TWEN);}
#define Twi           (TWCR=(1<<TWINT)|(1<<TWEN)) 
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<=8000;i++);
}
void delay_ms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
delay_1ms();
}
unsigned char i2cwrite(unsigned char data,unsigned char romadress)
{
start;
wait;

if((TWSR&0xf8)!=START) return 1;

write8bit(wr_device_adress);
wait;
if((TWSR&0xf8)!=MT_SLA_ACK) return 1;
write8bit(romadress)
wait;
if((TWSR&0xf8)!=MT_DATA_ACK) return 1;
write8bit(data);
wait;
if((TWSR&0xf8)!=MT_DATA_ACK) return 1;
stop;
delay_ms(10);
return 0;
}
unsigned char i2cread(unsigned char romadress)
{unsigned char temp;
start;
wait;

if((TWSR&0xf8)!=START) 

return 1;

write8bit(wr_device_adress);
wait;

if((TWSR&0xf8)!=MT_SLA_ACK) return 1;

write8bit(romadress);
wait;

if ((TWSR&0xf8)!=MT_DATA_ACK) return 1;

start;
wait;
if ((TWSR&0xf8)!=restart) return 1;

write8bit(rd_device_adress);
wait;
if((TWSR&0xf8)!=MR_SLA_ACK) return 1;

Twi;
wait;  
 
if((TWSR&0xf8)!=MR_DATA_NOACK) return 1;
   
temp=TWDR;     
stop;
return temp;
}
void twi_init(void)
{
DDRD=0XFF;
PORTD=0Xff;
 TWCR= 0X00; //disable twi
 TWBR= 0x64; //set bit rate
 TWSR= 0x00; //set prescale
 TWAR= 0x00; //set slave address
 TWCR= 0x04; //enable twi
}

void main(void)
{
unsigned char data=0x00;
unsigned char adress=0x00;
twi_init();






while(1)
{
for(data=0x00,adress=0x00;adress<255;data++,adress++)
{i2cwrite(data,adress);
DDRB=0xFF;
if(data==i2cread(adress))
{delay_ms(5);
PORTB=i2cread(adress);
delay_ms(0);}
else
{PORTB=0xff;
while(1);}
}

}
}

⌨️ 快捷键说明

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