📄 24c01.h
字号:
#include "excalibur.h"
np_pio* ic_scl=na_i2c_clk;
np_pio* ic_sda=na_i2c_dio;
void delayic(int n)
{
int i;
for(i=0;i<n;i++);
}
void ic_start()
{
ic_sda->np_piodata=1;
ic_scl->np_piodata=1;
ic_sda->np_piodata=0;
}
void ic_stop()
{
ic_sda->np_piodata=0;
ic_scl->np_piodata=1;
ic_sda->np_piodata=1;
}
void ic_ack()
{
ic_scl->np_piodata=0;
ic_sda->np_piodata=0;
ic_scl->np_piodata=1;
delayic(1);
ic_scl->np_piodata=0;
}
void shift8(unsigned char a)//送指令
{
unsigned char i;
for(i=0;i<8;i++)
{
delayic(1);
ic_scl->np_piodata=0;
ic_sda->np_piodata=a>>7;
a=a<<1;
delayic(1);
ic_scl->np_piodata=1;
}
ic_ack();
}
unsigned char rd_24c01(unsigned char a)//读取数据,a为地址
{
unsigned char i,d=0;
ic_start();
shift8(0xa0);
shift8(a);
ic_start();
shift8(0xa1);
ic_sda->np_piodirection=0;
for (i = 1; i <= 8; i++)
{
delayic(1);
ic_scl->np_piodata = 0;
delayic(1);
ic_scl->np_piodata = 1;
d = d << 1;
d |=ic_sda->np_piodata;
}
ic_sda->np_piodirection=1;
ic_stop();
return d;
}
//写入数据,a为地址,b为数据
void wr_24c01(unsigned char a,unsigned char b)
{
ic_start();
shift8(0xa0);
shift8(a);
shift8(b);
ic_stop();
}
void initialic()
{
ic_sda->np_piodirection=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -