sbit ce1302=P3^5;
sbit scl1302=P3^6 ;
sbit io1302= P3^4;
uchar read_1302(uchar com)
{
uchar temp=0x00,dat;
scl1302=0;
_nop_();
ce1302=1;
_nop_();
for(i=0;i<7;i++)
{
io1302=com&0x01;
com=com>>1;
scl1302=1;
_nop_();
scl1302=0;
_nop_();
} _nop_();
for(i=0;i<7;i++)
{
dat=io1302;
dat=dat<<7;
temp=(temp>>1)|dat;
scl1302=1;
_nop_();
scl1302=0;
_nop_();
}
ce1302=0;
_nop_();
scl1302=1;
_nop_();
io1302=0;
_nop_();
io1302=1;
_nop_();
return temp;
}
void write_1302(uchar com,uchar dat)
{
uchar temp;
scl1302=0;
_nop_();
ce1302=1;
_nop_();
for(i=0;i<7;i++)
{
io1302=com&0x01;
com=com>>1;
scl1302=1;
_nop_();
scl1302=0;
_nop_();
}
for(i=0;i<7;i++)
{
io1302=dat&0x01;
dat=dat>>1;
scl1302=1;
_nop_();
scl1302=0;
_nop_();
}
ce1302=0;
_nop_();
}
uchar bcd_h(uchar dat)
{
uchar dat1;
dat1=dat>>4;
return(dat1*10+(dat&0x0F));
}
void init_1302()
{
ce1302=0;
scl1302=0;
write_1302(0x8e,0x00);
write_1302(0x84,0x00);
write_1302(0x82,0x00);
write_1302(0x80,0x00);
write_1302(0x86,0x01);
write_1302(0x88,0x01);
write_1302(0x8a,0x01);
write_1302(0x8c,0x12);
// write_1302(0x8e,0x80); //打开写保护
} //2010-01-07,12:00:00
void duqu()
{
shi=bcd_h(read_1302(0x85));
fen=bcd_h(read_1302(0x83));
miao=bcd_h(read_1302(0x81));
write_sfm(4,shi);
write_sfm(7,fen);
write_sfm(10,miao);
}
void main()
{
init();
init_1302();
while(1)
{
keyscan();
duqu();
}
}
这一段加载到普中科技的学习版上不会
|