这样怎么办。。。。。。我在IO口已经上拉电阻但是没有效果。仿真也没问题
#define RST0() RST=0
unsigned char time[]={0x00,0x0b,0x0b,0x02,0x01,0x01,0x0c};
//写入dat
void ds1302_write(unsigned char dat)
{
uchar i;
DDR_1();
for (i=0;i<8;i++)
{
if(dat & 0x01) IO1();
else IO0() ;
dat=dat>>1;
SLCK0();_nop_();
SLCK1(); _nop_();
}
}
//输出dat
unsigned char ds1302_read()
{
uchar i;
uchar dat=0x00;
DDR_0();
for (i=0;i<8;i++)
{
SLCK1(); _nop_();
SLCK0();_nop_();
if(io()) dat |=(1<<i);
}
return dat/16*10+dat%16;
}
//读取指定地址adress中的dat
unsigned char ds1302_readadress(unsigned char adress)
{
uchar dat;
RST0(); _nop_();
SLCK0(); _nop_();
RST1(); _nop_();
ds1302_write(adress);
dat=ds1302_read();
SLCK1(); _nop_();
RST0(); _nop_();
return dat;
}
//在指定地址adress写入dat
void ds1302_writeadress(unsigned char adress ,unsigned char dat)
{
RST0(); _nop_();
SLCK0(); _nop_();
RST1(); _nop_();
ds1302_write(adress) ;
ds1302_write(dat);
SLCK1(); _nop_();
RST0();
}
//读取时间
void ds1302_readtime()
{ uchar i;
uchar adress=0x81;
for (i=0;i<7;i++)
{
time=ds1302_readadress(adress);
adress +=2;
_nop_();_nop_();
_nop_();_nop_();
}
} |