独闷闷网

 找回密码
 立即注册
搜索
查看: 1747|回复: 0
收起左侧

[原创] 在定时中断里这样配置TH0=(65536-45872)/256是不科学的.

[复制链接]
发表于 2014-9-15 22:23:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
鸿哥解答:刚刚看到坚鸿51单片机群里有个群友这样写中断程序,我觉得不科学,有隐患。万一编译器不是事先就把结果运算出来,而是程序每次进入中断就进行一次算法运算,那定时中断的效率和时间精度会大大的下降。
群友原来的写法:

void timer0() interrupt 1
{
        TH0=(65536-45872)/256;  //有可能每次进入中断都要进行一次计算,如果是这样,那就会影响定时精度和效率了
        TL0=(65536-45872)%256;
        t++;
}



建议改成这样:
void timer0() interrupt 1
{
        TH0=0x4c;   //直接填写数值,避免程序进行运算。
        TL0=0xd0;
        t++;
}

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2020-10-29 01:22 , Processed in 0.129895 second(s), 18 queries .

快速回复 返回顶部 返回列表