我也遇到过,将ds1302的读函数改成这样就可以正常同时显示了
unsigned char DS1302_ReadData(unsigned char addr){
unsigned char i,reval=0,temp;
CE = 0;
SCLK = 0;
CE = 1;
// 写寄存器地址
for(i=0;i<8;i++){
SCLK = 0;
SDIO = addr & 0x01;
addr >>= 1;
SCLK = 1; // 上升沿读入数据
}
// 读数据
for(i=0;i<8;i++){
SCLK = 1;
SCLK = 0;
temp = SDIO;
reval = (temp<<7) | (reval>>1); // 下降沿读出数据
}
CE = 0;
SCLK = 1;
SDIO = 0;
SDIO = 1;
CE = 1;
reval = reval/16*10+(reval%16);
return reval;
} |