将DS1302时钟走时更准确的方法

来源:本站
导读:目前正在解读《将DS1302时钟走时更准确的方法》的相关信息,《将DS1302时钟走时更准确的方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《将DS1302时钟走时更准确的方法》的详细说明。
简介:本文介绍了一种使DS1302走时更准确的方法以及程序。

用DS1302制作电子时钟,由于32678K的晶振误差原因造成时钟走时不准确,大家使用的晶振精度都不高,每天误差都差6到10秒,如果购买高精度的晶振价格又非常高,不如用单片机的计时器编程走时更准确,可以进行误差调整,本人作了几个用DS1302时钟,由于32678K晶振的原因,每天都快6-9秒之间,原来用的方法是每天自动校一次,由于每天的误差不是整数,比如每天快7.6秒,这样每天就得自动校8秒,又造成每天慢0.4秒,每月误差又是12秒,走时还是不准确,本人改成了每差1秒校正一次的方法,原理是:比如每天快7.6秒,24*60/7.6=189,也就是189分钟快1秒,每189分钟就自动校一次时钟,这样校时理论上每年的误差最大不到6秒,本人的时钟4个月误差不到1秒,属于相当准确喽,现在提供给大家分享。

设计原理是:

由于程序的大小和原理不同,每分钟读取DS1302的次数也不同,这样先设置二个变量,一个是分钟比较变量,用于判断分钟不等相等时计数器变量加1,另一个是校时计数变量,用于校时时间计数,当计数器变量等于189时,DS1302自动修正一次,程序如下:

代码:

变量设置

BJBL DATA 20H ;分钟比较变量,用于判断分钟不等相等时计数器加1

JSBL DATA 21H ;校时计数变量,用于校时时间计数

MOV BJBL,#00H

MOV JSBL,#00H

自动校时子程序

AUTOXS:

MOV A,MIN

CJNE A,BJBL,AS1

JMP AS2

AS1: MOV BJBL,A

MOV A,JSBL

INC A

MOV JSBL,A

AS2: MOV A,JSBL

CJNE A,#0D3H,AS5

MOV A,SEC

CJNE A,#01H,AS5 ;秒等于1时校回到0秒

MOV R1,#8EH ;写保护寄存器

MOV R0,#00H ;允许写入

LCALL WRITE ;调用写DS1302程序

MOV R1,#80H ;写秒寄存器

MOV R0,#00H ;启动振荡器工作

LCALL WRITE ;调用写DS1302程序

MOV R1,#8EH ;写保护寄存器

MOV R0,#80H ;禁止写入

LCALL WRITE ;调用写DS1302程序

MOV JSBL,#00H

AS5: RET

将此子程序在每次读取DS1302时调用

提醒:《将DS1302时钟走时更准确的方法》最后刷新时间 2024-03-14 01:15:24,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《将DS1302时钟走时更准确的方法》该内容的真实性请自行鉴别。