twi.c
来自「用AVR M8控制PT2134音频芯片的程序,显示是LCM2402,还带有有红外」· C语言 代码 · 共 132 行
C
132 行
#include <avr/io.h>
#include <util/delay.h>
#include "TWI.h"
uchar fo;
//*************************************
void i2c_start(){ //其始信号
SET_SCL;
SET_SDA;
_delay_us(6);
CLR_SDA;
_delay_us(6);
CLR_SCL; //当SCL为高电位时SDA上的数据无效,当SCL为低电位SDA有效
}
//***************************************
void i2c_stop(){ //停止信号
CLR_SDA;
SET_SCL;
_delay_us(6);
SET_SDA;
_delay_us(6);
CLR_SCL;
}
//****************************************
void i2c_ack(){ //答应信号
CLR_SDA;
SET_SCL;
_delay_us(6);
CLR_SCL;
SET_SDA;
}
//****************************************
void i2c_nack(){ //非答应信号
SET_SDA;
SET_SCL;
_delay_us(6);
CLR_SCL;
CLR_SDA;
}
//****************************************
write_byte(uchar c){ //写一字节
uchar i;
for(i=0;i<8;i++){
if((c<<i)&0x80)SET_SDA;
else CLR_SDA;
SET_SCL;
_delay_us(6);
CLR_SCL;
}
SET_SDA;
SET_SCL;
_delay_us(6);
if (PINC&(1<<PC4))fo=0;
else fo=1;
CLR_SCL;
}
//**************************************
/*uchar read_byte(){ //读一字节
uchar ii;
uchar r=0;
SET_SDA;
for(ii=0;ii<8;ii++){
r=r<<1;
SET_SCL;
_delay_us(6);
if (PINC&(1<<PC4))r++;
CLR_SCL;
}
return r;
}*/
//****************************************
/*uchar write_nbyte(uchar slave,uchar addr,uchar *ss,uchar num){ //写N字节
uchar iii;
i2c_start();
write_byte(slave);
if(fo==0)return 0;
write_byte(addr);
if(fo==0)return 0;
for(iii=0;iii<num;iii++){
write_byte(*ss);
if(fo==0)return 0;
ss++;
}
i2c_stop();
return(1);
}*/
//****************************************
/*uchar read_nbyte(uchar slave,uchar addr,uchar *s,uchar num){ //读N字节
uchar is;
i2c_start();
write_byte(slave); //写操作
if(fo==0)return 0;
write_byte(addr);
if(fo==0)return 0;
i2c_start();
write_byte(slave+1);//读操作
if(fo==0)return 0;
for(is=0;is<num;is++){
*s=read_byte();
i2c_ack();
s++;
}
*s=read_byte();
i2c_nack();
i2c_stop();
return(1);
}*/
//***************************************************
uchar write_nbyte1(uchar slave,uchar dat){ //写1字节
i2c_start();
write_byte(slave);
if(fo==0)return 0;
write_byte(dat);
if(fo==0)return 0;
i2c_stop();
return(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?