51单片机定时器中断问题

voidT0_time()interrupt1{way++;TR0=0;switch(way){case1:TH0=(65536-X)/256;TL0=(65536-X)... void T0_time()interrupt 1
{
way++;
TR0=0;
switch(way)
{
case 1: TH0=(65536-X)/256;
TL0=(65536-X)%256; //使用立即数占用时间极短
R1=1;
break;
case 2: TH0=(63036+X)/256; //变量传递参数会占用大量时间,约零点几毫秒
TL0=(63036+X)%256;
R1=0;
break;
case 3: TH0=(65536-1500)/256;
TL0=(65536-1500)%256;
R2=1;
break;
case 4: TH0=(63036+1500)/256;
TL0=(63036+1500)%256;
R2=0;
break;
........................
程序如上所示,本中断程序用于51单片机产生PWM波,且要实现占空比可调,但是经实验发现65536后面如果用变量传递数值所用时间与直接用数值相比多得多,多出几毫秒,为什么用变量传递会多出几毫秒的差距呢,还是因为别的什么原因?!求各位网友意见
展开
 我来答
做而论道
高能答主

2013-11-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
case 2: TH0=(63036+X)/256;--这种表达式,要由单片机来算出结果
TL0=(63036+X)%256;--这两行,都是16位数的计算,非常浪费单片机的时间

case 3: TH0=(65536-1500)/256;--这两行,都是由编译软件来算,结果,存入了ROM
TL0=(65536-1500)%256;--这两行,单片机,只是传送而已,占用单片机的时间最少
he_123456
2013-11-16 · TA获得超过2892个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1346万
展开全部
有小差异正常,差几毫秒肯定不是变量与立即数的差异引起的,
真实的原因需要分析真实的代码才能得到,不然只能瞎猜呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式