#define uchar unsigned char
#define uint unsigned int
#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1
//sbit kd_key=P1^2;
unsigned char data display_bit,display_buffer[5],keyscan_bit,buffer;
unsigned char code led[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char time,second,minute,key5,key6;
void delay(uint n);
//void key(void)
/// {
// if(buffer==0xfb)
// {switch(minute)
// {
// case 0x00: minute=60;minute--;break;
// }
// }
// }
//******************************************
void start(void)
{
sda=1;
scl=1;
delay(2);
sda=0;
delay(6);
scl=0;
delay(6);
}
void stop(void)
{
sda=0;
scl=1;
delay(6);
sda=1;
delay(6);
scl=0;
sda=0;
}
/////////*************
//void ack(void)
// {
// sda=0;
// delay(3);
//scl=1;
// delay(3);
// scl=0;
// sda=1;
// }
/////////////////////////////////
uchar rd24(void)
{
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);
}
void wd24(uchar dd)
{
ACC=dd;
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;
while(sda==1)
scl=0;
}
uchar read_byter(uchar address)
{
uchar x;
start();
wd24(0xa0);
wd24(address);
start();
wd24(0xa1);
x=rd24();
stop();
return(x);
}
uchar read(uchar address,uchar n)
{
uchar a,y;
for(y=0;y <n;y++)
{
a=read_byter(address+y);
display_buffer[y]=a;
return(display_buffer[y]);
}
}
void write_byte(uchar address,uchar dd)
{
start();
wd24(0xa0);
wd24(address);
wd24(dd);
stop();
}
void write(uchar address,uchar n)
{
uchar y;
for(y=0;y <n;y++)
write_byte(address+y,display_buffer[y]);
delay(10);
}
//********************************************
void time0(void)interrupt 1 using 1
{
TH0=-9216/256;
TL0=-9216%256;
if(++time==100)
{
++second;
time=0;
}
if(second==60)
{
++minute;
second=0;
}
if(minute==59)
{
minute=0;
}
}
void delay(uint n)//不能定义J为CHAR因为CHAR只能定义256个数
{
unsigned char i,j;
for(i=0;i <n;i++)
{
for(j=0;j <20;j++);
}
}
void send(unsigned char a)
{
unsigned char k;
for(k=0;k <8;k++)
{
if(_crol_(a,k)&0x80)
ASDA=1;
else
ASDA=0;
ACLK=1;
ACLK=0;
}
}
void display()
{
unsigned char i,k;
display_bit=0xbf;
for(i=1;i <=4;i++)
{ P1=0xff;
k=led[display_buffer[i]];
send(k);
P1=display_bit;
delay(1);
display_bit=_cror_(display_bit,1);
}
}
void main(void)
{
TH0=-9216/256;
TL0=-9216%256;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display_buffer[1]=minute/10;
display_buffer[2]=minute%10;
display_buffer[3]=second/10;
display_buffer[4]=second%10;
display();
write(0x00,4);
read(0x00,4);
//key_scan();
// keyprosser();
}
}