📄 iic总线.c
字号:
#include<reg52.h>
#include<intrins.h>
#define unchar unsigned char
sbit SCL=P1^5;
sbit SDA=P1^6;
sbit lag=P1^4;
sbit dula=P2^0;
sbit wela=P2^1;
void delay1 (int a )
{ int i,j;
for(i=0;i<a;i++)
for(j=0;j<100;j++);
}
void delay()
{ unchar i=3;
while(i--);}
void init()
{ SCL=1;
delay();
SDA=1;
delay();
}
void start()
{
SCL=1;
delay();
SDA=0;
delay();
SCL=0;
delay();
}
void stop()
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
void response()
{ int i;
SCL=1;
delay();
while(SDA==1&&i<255)
i++;
SCL=0;
delay();
}
void write_byte(char date)
{ unchar i, temp;
SCL=0;
delay();
temp=date;
for (i=0;i<8;i++)
{ temp=temp<<1;
SCL=0;
delay();
SDA=CY;
SCL=1;
delay();
SCL=0;
delay();
}
SDA=1;
delay();
}
unchar read_byte()
{ unchar i,temp;
SCL=0;
delay();
SDA=1;
delay();
for(i=0;i++;i<8)
{ SCL=1;
delay();
temp=temp<<1;
temp=temp|SDA;
SCL=0;
delay();
}
return (temp);
}
void write_add(unchar add,unchar date)
{start();
write_byte(0xa0);
response();
write_byte(add);
response();
write_byte(date);
response();
stop();
}
unchar read_add(unchar add)
{ unchar a;
start();
write_byte(0xa0);
response();
write_byte(add);
response();
start();
write_byte(0xa1);
response();
a=read_byte();
stop();
return a;
}
main()
{ lag=0;
init();
write_add(0x80,0x00);
delay1(100);
wela=1;
P0=read_add(0x80);
wela=0;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -