51单片机定时器2的最短定时时间怎么有限制?

晶振是12MHZ的,12分频,按道理计数器应该是每1微秒自加一次,那么理论上最小定时时长也应该是1微秒,考虑中断等等CPU干别的事要花些时间,我想那么定时定个20微秒也应... 晶振是12MHZ的,12分频,按道理计数器应该是每1微秒自加一次,那么理论上最小定时时长也应该是1微秒,考虑中断等等CPU干别的事要花些时间,我想那么定时定个20微秒也应该不是问题吧。

我写了程序发现定时时长在250微秒(65536UL-250)以上,烧到板子上观察都是准的(我的观察方法是:定时每250微秒中断,中断4000次的时候数码管加一,看数码管是不是每隔一秒加一,结果的确是的)。

但是再想把定时时长改短,不管怎么改短(比如65536UL-200)时长都不会再变短,这不科学啊!

如果中断频率最高只能到4KHz(即最短定时时长只能在250微秒),那么这个性能是没法达到我的要求的,我要用它产生方波信号,驱动开关电源的。急求各位大侠解决方案!

uint Reload_16;
uchar Reload_08H, Reload_08L;
T2CON = 0x04; //start timer2 as a 16 bit timer and reload automaticly

Reload_16 = 65536UL - 250; //就是这个地方,大于250都是准的,改小就不准了!
Reload_08H = Reload_16 /256;
Reload_08L = Reload_16 %256;
TH2 = Reload_08H;
RCAP2H = Reload_08H;
TL2 = Reload_08L;
RCAP2L = Reload_08L;
ET2 = 1; // activate timer2 interrupt
TR2 = 1; // activate timer2
EA = 1;
单片机是STC90C516RD+
展开
 我来答
GUEL86
推荐于2018-03-14 · TA获得超过5856个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2735万
展开全部
51单片机定时器,晶振是12MHZ、12分频,理论上最短定时时间1微秒,
但是,CPU 运行指令 需要时间,只要中断服务程序 的运行时间 不超过定时器 定时时间,
并且 有些余量,则就不成问题,如果没有余量,则中断结束 又进入 中断,
如果 超过定时器 定时时间,则来不及 处理 定时也就不准确了。
用 C 语言编程,有可能 定时时间 过短 会有问题,有不好 计算中断用去多少时间。
如果用 汇编语言 编程,晶振是12MHZ、12分频,只是产生一个方波信号,30KHz 频率没有问题。
当然你要检测 准确性 加入计数程序后 会占用时间,
一般编程时, 在中断 服务程序中 尽量少占用时间,能不在中断服务程序中处理的 事尽量 不在
中断服务程序中 处理。
追问
单纯的数码管动态显示又没有software delay.还没干正事呢,只是用数码管检测一下定时器就出问题了
追答
其实 数码管动态显示,也可以用定时器 来完成,如 8 个 数码管,定时 2 - 2.5 mS,
每次定时器中断 扫描显示 一 位数码管,8 次中断 16 - 20 mS 完成 8 个数码管的显示。
勤奋的石头1
2013-02-13 · 超过10用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:29.5万
展开全部
1微秒是每条汇编指令需要的时间,定时器中断涉及到了压栈寻址出栈等操作,天知道用了多少条汇编指令,你定个20微妙当然有问题,程序还有别的事情干,比如数码管显示(这玩意儿也很耗时),不能光响应你的中断去了。。。
如果用中断还想有一定的精度的话一般单片机的话10~20k就到顶了。
不过如果你只是想输出高频方波信号的话,我建议你不要用定时器,直接在主程序里面加循环,除去必须的代码后,根据需要的频率增加不同数量的_nop_指令,这个应该能达到更高的频率。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-02-06 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
应该是你的中断服务程序有问题,占用时间可能太多,超过定时时间了,因此可能造成不准的情况,贴上你的定时中断程序看看,还有最好在定时程序里赋值时先作如下处理:
TR2=0;
赋值
TR2=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huwqly
2013-02-06 · TA获得超过493个赞
知道小有建树答主
回答量:646
采纳率:20%
帮助的人:188万
展开全部
如果你要提高定时精度,你可以增加晶振频率如:24MHZ,是不是能够解决你的问题
追问
如何提高?百度过,没谁说的清楚,买个快的?
追答
增加晶振频率如:24MHZ,买个快的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2013-02-06 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1075万
展开全部
这个单片机不是传统的51单片机,时钟比传统51的时钟要快12倍,仔细看芯片资料...
追问
要是快的话,定时时长应该可以更短
追答
你说的对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式