请教下stc例程定时器装初值是怎么计算的
#define MAIN_Fosc 24000000UL //定义主时钟#define Timer0_Reload (65536UL -(MAIN_Fosc / 600000)) //Timer 0 重装值, 对应300KHZ
ET0 = 0; //初始化Timer0输出一个300KHZ时钟
TR0 = 0;
AUXR |=0x80; //Timer0 set as 1T mode
AUXR2 |= 0x01; //允许输出时钟
TMOD = 0; //Timer0 set as Timer, 16 bits Auto Reload.
TH0 = (u8)(Timer0_Reload >> 8);
TL0 = (u8)Timer0_Reload;
TR0 = 1; #define Timer0_Reload (65536UL -(MAIN_Fosc / 600000)) //就是这一行计算的 tim 发表于 2015-5-6 09:47
#define Timer0_Reload (65536UL -(MAIN_Fosc / 600000)) //就是这一行计算 ...
知道是这一行,但是自己算了下不对呀 chen849928055 发表于 2015-5-6 12:22
知道是这一行,但是自己算了下不对呀
怎么个不对法?
你测试过程序了吗?这个算法正确的,这个例程是输出300KHZ时钟,则溢出率就是600K,就是600000。使用1T模式,则就是直接 主频/600000,由于是加计数,计满溢出才自动重装,所以要用65536减。 可能他没理解定时器原理。。建议看数据手册。。。 直接软件计算了,自己算着多累 小李非刀 发表于 2015-5-6 14:57
怎么个不对法?
你测试过程序了吗?这个算法正确的,这个例程是输出300KHZ时钟,则溢出率就是600K,就是6 ...
是我自己没算对,从新看了下手册,算了下,是对的。谢谢你的解答
页:
[1]