📄 i2c.h
字号:
#include<intrins.h>
#define uchar unsigned char
sbit scl=P1^4;
sbit sda=P1^5;
void delay();
void start();
void stop();
void waitack();
void ack();
void noack();
void send_byte(uchar temp);
uchar receive_byte();
uchar read_one(uchar order,uchar address);
void send_one(uchar order,uchar address,uchar what);
void send(uchar order,uchar address,uchar *str,uchar num);
void read(uchar order,uchar address,uchar *str,uchar num);
void delay()
{
uchar i;
for(i=5;i>0;i++);
}
void start()
{
sda=1;
scl=1;
delay();
sda=0;
delay();
scl=0;
delay();
}
void stop()
{
scl=1;
sda=0;
delay();
sda=1;
delay();
}
void waitack()
{
sda=0;
delay();
scl=0;
delay();
scl=1;
delay();
scl=0;
delay();
}
void ack()
{
sda=0;
delay();
scl=1;
delay();
scl=0;
}
void noack()
{
sda=1;
delay();
scl=1;
delay();
scl=0;
}
void send_byte(uchar temp)
{
uchar i,pp;
for(i=0;i<8;i++)
{
pp=(temp<<i)&0x80;
if(pp==0x80) sda=1;
else sda=0;
delay();
scl=1;
delay();
scl=0;
delay();
}
}
uchar receive_byte()
{
uchar i,k=0;
bit msb;
sda=1;
for(i=0;i<8;i++)
{
scl=0;
delay();
scl=1;
delay();
k=k<<1;
msb=sda;
if(msb==1)
k=k|0x01;
}
scl=0;
delay();
return(k);
}
void send(uchar order,uchar address,uchar *str,uchar num)
{
uchar i;
start();
send_byte(order);
waitack();
send_byte(address);
waitack();
for(i=0;i<num;i++)
{
send_byte(*str+i);
waitack();
}
stop();
}
void send_one(uchar order,uchar address,uchar what)
{
start();
send_byte(order);
waitack();
send_byte(address);
waitack();
send_byte(what);
waitack();
stop();
}
uchar read_one(uchar order,uchar address)
{
uchar hehe;
start();
send_byte(order);
waitack();
send_byte(address);
waitack();
start();
send_byte(order+1);
waitack();
hehe=receive_byte();
noack();
stop();
return(hehe);
}
void read(uchar order,uchar address,uchar *str,uchar num)
{
uchar i;
start();
send_byte(order);
waitack();
send_byte(address);
waitack();
start();
send_byte(order+1);
waitack();
for(i=0;i<num-1;i++)
{
str[i]=receive_byte();
ack();
}
str[i]=receive_byte();
noack();
stop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -