⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c02.c

📁 24c02串行传输
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int
sbit sda=P2^0;
sbit scl=P2^1;
sbit dual=P2^6;
sbit weal=P2^7;

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar tac[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

uchar flag,sec,ee;

void delay()
{;;}

void delay1(uint z)
{
uint x,y;
for(x=0;x<110;x++)
for(y=z;y>0;y--);
}

void xianshi(uchar aa,uchar bb,uchar b,uchar s,uchar g,uchar f)
{
	weal=1;
	P0=0xdf;
	weal=0;
	dual=1;
	P0=table[aa];
	dual=0;
	delay1(1);

	weal=1;
	P0=0xef;
	weal=0;
	dual=1;
	P0=table[bb];
	dual=0;	
	delay1(1);

	weal=1;
	P0=0xf7;
	weal=0;
	dual=1;
	P0=table[b];
	dual=0;	
	delay1(1);

	weal=1;
	P0=0xfb;
	weal=0;
	dual=1;
	P0=table[s];
	dual=0;
	delay1(1);

	weal=1;
	P0=0xfd;
	weal=0;
	dual=1;
	P0=table[g];
	dual=0;
	delay1(1);

	weal=1;
	P0=0xfe;
	weal=0;
	dual=1;
	P0=table[f];
	dual=0;
	delay1(1);
}

void init()//初始化
{
sda=1;
delay();
scl=1;
delay();
}

void start()//启
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}

void stop()//终止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}

void respond()//回应
{
uchar a;
scl=1;
delay();
while((sda==1)&&(a<250))
a++;
scl=0;
delay();
}

void write(uchar date)//写入数据
{
uchar b,temp;
temp=date;
	for(b=0;b<8;b++)
	{
	temp=temp<<1;//左移8次,将数据全取出
	scl=0;  //允许数据变换
	delay();
	sda=CY;//将第9位放在sda
	delay();
	scl=1;
	delay();
	}
scl=0;
delay();
sda=1;
delay();
}

uchar read()//读数据
{uchar b,temp1;
scl=0;
delay();
sda=1;
delay();
	for(b=0;b<8;b++)
	{
	scl=1;
	delay();
	temp1=temp1<<1|sda;
	scl=0;
	delay();
	}
return temp1;
}

void writeadd(uchar add,uchar date)//指定芯片地址与写数据
{
start();
write(0xa0);//片选1010固定,A0A1A2=0,RW=0,10100000
respond();
write(add);//24c02地址
respond();
write(date);//24C02数据
respond();
stop();
}

uchar readadd(uchar add)//指定芯片地址与读数据
{
uchar d;
start();
write(0xa0);
respond();
write(add);
respond();
start();
write(0xa1);//片选  1010 0001
respond();
d=read();
stop();
return d;
}

init1()
{
TMOD=0x01;
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
EA=1;
ET0=1;
TR0=1;
P3=0x7f;
sec=readadd(13);
}



main()
{
	init();	
	init1();
	while(1)
	{	
	xianshi(6,5,4,3,sec/10,sec%10);
	}
}

t0() interrupt 1
{
uchar s;
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
s++;
if(s==2)
{
	s=0;
	if(P3==0x7e)
	{
	delay1(20);
	writeadd(13,20);
	delay1(10);	
	}	

	while(P3==0x7d)
	{
		delay1(30);
		while(P3==0x7d)	
		{

			delay1(10);
			sec=readadd(13);	
			delay();
			sec++;
			ee=sec;
			if(ee!=0)     writeadd(13,ee);
			if(sec==100)  sec=20;	
			while(P3==0x7d)	P3=0x7f;
		}
	}	
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -