keil仿真下,定时器不进行16位重载的原因

keil下对于定时器仿真的问题

情况:设置16位重载定时器之后,观察不到定时器的重载行为。
原因之一:keil在深层不支持对STC的仿真:

  1. 编写16为重载定时器的测试程序:
    在这里插入图片描述
    理论上:
    1、初始化定时器0,设置为16位重载定时器模式
    2、接着将TH0和TL0分别初始化为0xf0, 0x00(此时会将0xf0和0x00自动存入了RL_TH0和RL_TL0),启动定时器
    3、接下来等到定时器溢出的时候,TH0和TL0会重新装载RL_TH0和RL_TL0的值,即达到了自动重载的目的。

keil仿真下的问题

在这里插入图片描述
可见在keil仿真下,进入中断函数时,TH0和TL0并未重载,通过询问老师以及同学间的询问,了解到keil在深层不支持对STC的仿真。
我猜测:keil仿真下,是对定时器进行软件层次的模拟,即当各个使能位有效时就开始计数,当溢出的时候,进入中断并重新计数。
解决办法:在定时器0中断函数中,在最后重新给TH0和TL0赋值,不要在一开始就赋值,以避免中断函数过长导致还没执行完中断函数就就溢出了,但是51里面的中断嵌套很玄乎。。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值