📄 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 + -