📄 lesson 9.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P3^7;
sbit sck=P3^6;
void sda_0() {sda=0;;;;}
void sda_1() {sda=1;;;;}
void sck_0() {sck=0;;;;}
void sck_1() {sck=1;;;;}
void delay1() {;;;} //延时5us子程序
void delay(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void initial() //初始化子程序
{
sda_1();
sck_1();
}
void start() //开始子程序
{
sda_1();
sck_1();
sda_0();
}
void stop() //停止子程序
{
sda_0();
sck_1();
sda_1();
}
void response() //判断是否收到对方的响应信号,
{ //没有收到则在规定时间内默认对方收到数据
uchar i;
sck_1();
while((sda==1)&&(i<250))i++;
sck_0();
}
void write_byte(uchar data1) //写数据子程序
{
uchar i,temp;
temp=data1;
for(i=0;i<8;i++)
{
temp=temp<<1;
sck_0(); //时钟线为低电平时,数据线才能改变
sda=CY; delay1();
sck_1(); //时钟线为高电平时,数据必须稳定
}
sck_0();
sda_1(); //释放数据线
response();//等待对方响应
}
uchar read_byte() //读数据子程序
{
uchar i,temp;
sck_0();
sda_1();
for(i=0;i<8;i++)
{
sck_1();
temp=(temp<<1)|sda;
sck_0();
}
response();
return temp;
}
void write_address(uchar address,uchar data1)
{ //向24C02任意地址写任意数据子程序
start();
write_byte(0xa0);
write_byte(address);
write_byte(data1);
stop();
}
uchar read_address(uchar address)
{ //向24C02任意地址读任意数据子程序
uchar data1;
start();
write_byte(0xa0); //先发送地址+写方向
write_byte(address); //读24C02哪一地址的数据
start(); //接着又开始
write_byte(0xa1); //改变方向
data1=read_byte();
stop();
return data1;
}
void main()
{
uchar i,j;
initial();
for(i=0,j=0;i<255;i++,j++)
{
write_address(i,j); //把0到0xff数据存到24C02里
}
delay(1); //读数据前要延时一定时间
P1=read_address(0x55);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -