微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AT89S52定时器定时不准确,晶振12M

AT89S52定时器定时不准确,晶振12M

时间:10-02 整理:3721RD 点击:
用AT89S52的定时器做了一个数字钟
理论上定时50毫秒,20次为1秒,但实际中定时20次没有1秒,快很多
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;       
---------------------------------------------------------------------------------------
新手,没有学过C51编程,郭天祥的10天学会单片机只看了三四节

有没有人

这个定时器是根据你单片机内部时钟频率去工作定时的,看看外部晶振,你这个-50000/256……是12MHz晶振下,经51的CLK系统去12分频后供给系统时钟,时钟周期为1us,50000次计数就是50Ms,,,你用的是AT89的应该是12T的时钟分频,这样算是没错,所以我觉得是外接晶振的问题。况且用C语言编写定时函数本就不精确,想减少误差,利用中断去处理。

要是说外部晶振问题,总该不会是负载电容的问题吧,晶振的频率是非常稳定的,电路中能够影响晶振频率的只有负载电容,负载电容我用的33pF,33pF差不多似乎最合适的电容,过大过小都会影响晶振频率的。
用中断怎么处理?在中断函数里面加延时函数?

把数码管显示程序放到中断函数里面,可以跑数,但是按键判断放到哪儿都不好用了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top