📄 24c02.txt
字号:
#include <reg51.h>
#include <INTRINS.H>
sbit scl=P3^6; //针脚定义
sbit sda=P3^7;
sbit a0=ACC^0;
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;
//数码管显示的数据 0 1 2 3 4 5 6 7
static unsigned char code led[8]={0x5b,0x06,0x4f,0x4F,0x66,0x6D,0x7D,0x07};
//这里是要完成4.7us的延时
void delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
//24c02的开始信号
void start()
{
sda=1;
scl=1;
delay();
sda=0;
delay();
scl=0;
delay();
}
//24c02的停止信号
void stop()
{
sda=0;
scl=1;
delay();
sda=1;
delay();
}
//24c02的ack信号
bit checkack()
{
bit err;
sda=1;
scl=1;
delay();
err=sda;
delay();
scl=0;
if(err)
return 0;
else
return 1;
}
//对24c02写一个byte数据
void writebyte(unsigned char num)
{
ACC=num;
sda=a7;scl=1;scl=0;
sda=a6;scl=1;scl=0;
sda=a5;scl=1;scl=0;
sda=a4;scl=1;scl=0;
sda=a3;scl=1;scl=0;
sda=a2;scl=1;scl=0;
sda=a1;scl=1;scl=0;
sda=a0;scl=1;scl=0;
sda=1;
scl=1;
}
//对24c02读一个byte数据
unsigned char readbyte()
{
sda=1;
scl=1;a7=sda;scl=0;
scl=1;a6=sda;scl=0;
scl=1;a5=sda;scl=0;
scl=1;a4=sda;scl=0;
scl=1;a3=sda;scl=0;
scl=1;a2=sda;scl=0;
scl=1;a1=sda;scl=0;
scl=1;a0=sda;scl=0;
return (ACC);
}
//对24c02指定地址写入指定数据
void write24c02(unsigned char address,unsigned char num)
{
bit err;
start();
writebyte(0xa0);
err=checkack();
writebyte(address);
err=checkack();
writebyte(num);
err=checkack();
stop();
}
//对24c02指定地址中的数据读出来
unsigned char read24c02(unsigned char address)
{
unsigned char result;
bit err;
start();
writebyte(0xa0);
err=checkack();
writebyte(address);
err=checkack();
start();
writebyte(0xa1);
err=checkack();
result=readbyte();
stop();
return result;
}
void delay1s()
{
unsigned char i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
_nop_();
}
}
}
//将24c02中读出的数据显示在数码管上面
void displed(unsigned char num,unsigned char dsp)
{
switch (num)
{
case 0:
P2=0xfe;
P0=dsp;
break;
case 1:
P2=0xfd;
P0=dsp;
break;
case 2:
P2=0xfb;
P0=dsp;
break;
case 3:
P2=0xf7;
P0=dsp;
break;
case 4:
P2=0xef;
P0=dsp;
break;
case 5:
P2=0xdf;
P0=dsp;
break;
case 6:
P2=0xbf;
P0=dsp;
break;
case 7:
P2=0x7f;
P0=dsp;
break;
default:
break;
}
}
void main()
{
unsigned char address1,address2,i,temp;
unsigned char led1[8];
address1=0x94;
i=0x00;
while(i<8)
{
// address1=address2;
write24c02(address1,led[i]);
address1++;
i++;
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
}
address2=0x94;
i=0x00;
while(1)
{
lable1:
// address1=address2;
if(i<=7)
{
led1[i]=read24c02(address2);
displed(i,led1[i]);
}
else
{
i=0x00;
address2=0x94;
goto lable1;
}
i++;
address2++;
delay1s();
delay1s();
delay1s();
delay1s();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -