📄 i2c24c64.c
字号:
#include <e:\app\door\soft0814\main.h>
#include <e:\app\door\soft0814\I2C24C64.h>
#include <iom128v.h>
#include <macros.h>
unsigned char ram1,ram2;
void Delay_10_uS(void)
{
char i=5;
while(i--);
}
void Delay_mS()
{
unsigned char i=2000;
while(i--);
}
void I2C_Start(void)
{
SET_SDA();
Delay_10_uS();
CLEAR_SDA();
Delay_10_uS();
CLEAR_SCL();
Delay_10_uS();
}
void I2C_Stop(void)
{
Delay_10_uS();
CLEAR_SDA();
Delay_10_uS();
SET_SCL();
Delay_10_uS();
SET_SDA();
Delay_10_uS();
}
void I2C_Ack(void)
{
Delay_10_uS();
CLEAR_SDA();
Delay_10_uS();
SET_SCL();
Delay_10_uS();
CLEAR_SCL();
Delay_10_uS();
}
void I2C_Nack(void)
{
Delay_10_uS();
SET_SDA();
Delay_10_uS();
SET_SCL();
Delay_10_uS();
CLEAR_SCL();
Delay_10_uS();
}
unsigned char I2C_Send_Byte(unsigned char d)
{
unsigned char i;
unsigned char bit_ack;
for(i=0;i<8;i++)
{
if((d&0x80)==0x80)
SET_SDA();
else
CLEAR_SDA();
SET_SCL();
d=d<<1;
CLEAR_SCL();
}
SET_SDA();
Delay_10_uS();
SET_SCL();
Delay_10_uS();
if((PIND&0x02)==0x02)
bit_ack=0;
else
bit_ack=1;
CLEAR_SCL();
Delay_10_uS();
return bit_ack;
}
unsigned char I2C_Receive_Byte(void)
{
unsigned char i, d;
for(i=0;i<8;i++)
{
d = d << 1;
CLEAR_SCL();
Delay_10_uS();
SET_SCL();
Delay_10_uS();
if(PIND&0x02)d=d+1;
CLEAR_SCL();
Delay_10_uS();
}
CLEAR_SCL();
Delay_10_uS();
return d;
}
unsigned char send_address(unsigned char address)
{
I2C_Start();
if(I2C_Send_Byte(0xa0)&&I2C_Send_Byte(address))
return (1);
else
return (0);
}
unsigned char send_read(unsigned char aa)
{
I2C_Start();
if(I2C_Send_Byte(aa))
{
I2C_Stop();
}
}
/*main()
{
aa:
I2C_Stop();
if(send_address(0))
{
//I2C_Start();
send_read(0xa1);
ram1=I2C_Receive_Byte();
if(ram1==0){led6=0;led7=1;}
else if(ram1==1){led6=1;led7=0;}
else if(ram1==2){led6=1;led7=1;}
}
else
{
led6=0;led7=0;
}
while(p1_2);
if(send_address(0))
{
if(I2C_Send_Byte(1))
{led6=0;led7=0;}
I2C_Stop();
Delay_mS();
while(!p1_2);
goto aa;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -