STC8H单片机的掉电时间不对
我设置的是2秒,为啥测量出来的是2.5秒?我按照手册里面算的值,我哪里算的有问题吗?代码如下://Fwt在RAM中的地址
#define FWT_H (*(unsigned char volatile data *)0xF8)
#define FWT_L (*(unsigned char volatile data *)0xF9)
//2秒
#define DWON_TIME_MAX 2000000L
//获得内部RAM区的Fwt频率值
Fwt = FWT_H * 256;
Fwt += FWT_L;
//计算定时器的次数
Fwt_Num = (DWON_TIME_MAX / 1000000L) * Fwt / 16L;
Fwt_Num -= 1;
//获得定时器次数的高低字节
Fwt_Num_H = Fwt_Num / 256;
Fwt_Num_L = Fwt_Num % 256;
//设定掉电唤醒时钟约为2秒钟
WKTCL = Fwt_Num_L;
WKTCH = 0x80 | Fwt_Num_H;
主函数和测量的结果如下图:
手册里面的介绍:
延时的0.5秒是正常的,就是掉电定时器设置的时间不对,多了0.5秒。我读出来的Fwt频率是36800,我计算出来定时器重装值,高字节是17,低字节是247。是哪里的数据类型转换有问题吗? 顶 奇怪,我将获取的Fwt频率值,用65536-Fwt得到差值,差值是28736。用这个值设置定制器,掉电时间就正常了,变成了我设置的2秒时间。{:4_167:} 感觉像是这个内部32KIRC的误差引起的0.0,这个时钟温漂压飘都是存在的。
页:
[1]