DS1302做了个闹钟,固定误差20秒,请问可能是什么原因

来源:百度知道 编辑:UC知道 时间:2024/05/11 23:48:44
设置21:00:00,得闹钟,会在21:00:20才响
相关的程序是:
void main(void)
{
unsigned char temp;
SP=0;
LcdIni();
init_ds1302();
read_alarm_from_DS1302();

while(1)
{
scanf();
if(state==0)
{
Read_Temperature();
alarm();
。。。。。。
相关子程序如下:
————————————————————
void Read_Temperature(void)
{
Init_DS18B20();
WriteOneChar(0xCC); // 发SKIP ROM命令
WriteOneChar(0x44); // 发转换温度命令,写一个字节
Init_DS18B20();
WriteOneChar(0xCC); //发SKIP ROM命令
WriteOneChar(0xBE); //发转换温度命令,写第二个命令
TL=ReadOneChar(); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
TH=ReadOneChar();

Temperature=TH;
Temperature=Temperature<<8;
Temperature=Temperature|TL;//把两个八位数组成16位

if(Temperature>0)Temperature=Temperature*0.0625; //高于零度 /16/0.0625 Temperature/0.0625*4*4
else//低于零度
{
Temperature=~Temperature;
Temperature++;
Temperature=Temperat

输出响应时间有延迟

这个东西总不能太准确,我自己用了也感觉那样。放在那里几天,时钟就出偏差了,目前我也找不到什么原因,应该不是程序问题,因为关机的时候只有电池在供电,晶振出错的可能性也比较小,估计是芯片的问题。

gfsdfds

ee