at24cxx.c
来自「51单片机驱动2相步进电机程序。 keil 开发软件。」· C语言 代码 · 共 134 行
C
134 行
#include "config.h"
/****************************************************/
/****************************************************/
#define SCL P4_0 //24C02时序 6
#define SDA P4_1 //24C02数据线 5
/****************************************************/
void delay(unsigned int d)
{
unsigned int i,j;
for(i=0;i<d;i++)
for(j=0;j<1000;j++);
}
/****************************************************/
void DL(void)
{
unsigned char i;
for(i=0;i<3;i++);
}
/****************************************************/
void STARTI2C(void)
{
SDA=1;
SCL=1;
DL();
SDA=0;
DL();
SCL=0;
}
/****************************************************/
void stop(void)
{
SDA=0;
SCL=1;
DL();
SDA=1;
DL();
SCL=0;
}
/****************************************************/
void ack(void)
{
SDA=0;
SCL=1;
DL();
SDA=1;
SCL=0;
}
/****************************************************/
void output(unsigned char DD)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCL=0;
SCL=0;
DD=DD<<1;
SDA=CY;
DL();
SCL=1;
SCL=1;
DL();
DL();
}
DL();
SCL=0;
}
/****************************************************/
unsigned char input(void)
{
unsigned char i;
unsigned char DD;
for(i=0;i<8;i++)
{
DD=DD<<1;
SCL=0;
SCL=0;
DL();
SCL=1;
SCL=1;
DL();
DD=DD|SDA;
}
SCL=0;
return(DD);
}
/****************************************************/
void write(unsigned char aDD,unsigned char DData)
{
unsigned char head;
head=0xa0;
DL();
STARTI2C();
output(head);
ack();
output(aDD);
ack();
output(DData);
SDA=0;
ack();
DL();
stop();
delay(1);
}
/****************************************************/
unsigned char read(unsigned char aDD)
{
unsigned char rhead;
unsigned char whead;
unsigned char DD;
whead=0xa0;
rhead=0xa1;
DL();
STARTI2C();
output(whead);
ack();
output(aDD);
ack();
STARTI2C();
output(rhead);
ack();
DD=input();
ack();
DL();
stop();
return(DD);
}
/****************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?