51单片机定时器不准确,请进

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:25:30
//aabbcc分别是秒分时,09年5月9号 1点10分编 胡智畅
//适用于11.0592M晶振 运行一年误差在一秒左右

#include<intrins.h>
#include <reg51.h>
unsigned char a,a1,a2,a3,a4,aa,bb,cc,dd,ab;
sbit dat=P1^0; //定义驱动74595的数据脚为p1.0 四位数码管连74595
sbit clk=P1^1; //74595的时钟
sbit lat=P1^2; //栓锁
sbit gw=P1^3; //个位显示控制脚
sbit sw=P1^4; //十位
sbit bw=P3^3; //百位
sbit qw=P3^4; //千位
sbit pl5=P3^6; //165锁存 8个键盘连74165
sbit clk5=P3^7; //165时钟
sbit Do5=P3^5; //165串口数据

//------字表------------------------------
unsigned char code tab[]=
{ 0x3F,0x06,0x5B,0x4F, //"0","1","2","3"
0x66,0x6D,0x7D,0x07, //"4","5","6","7"
0x7F,0x6F,0x77,0x7c, //"8","9","A","B"
0x39,0x5e,0x79,0x71,0x80 //"C","D","E","F"
} ;

进入T1中断后关所有中断 EA= 0,同时里面的指令最好用汇编实现可以计算出指令运行时间,考虑上这一部分时间,同时把T1中断的优先级设定为最高优先级。只要你的晶振质量可靠定时还是非常准确的!

这是51单片机的固有误差,很难消除,建议做准确时间的不要用51内部定时器,而用外部时钟芯片,如DS1302等

运行一年误差在一秒左右

<<< 糊 智 畅 >>>他在骗谁????????

高档的时钟芯片都没这样的精度