打印

51单片机定时器中断问题?

[复制链接]
3130|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7120223|  楼主 | 2010-10-30 20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近遇到个问题,感到有点奇怪,特来证实一下,定时器0中断
....
TR0 = 1;
....
void timer0() interrupt 1
{
      ....
     TR0 = 0;   
      .....          //???   
}
在定时器优先级最高,在里面把它关掉的话 下面的程序也是应该执行到底的吧?会不会有意外使他不执行下去?这些天有个程序感觉到就是这个里面出点问题。TR0 = 0;下面
的程序有时执行,有时没有执行。

相关帖子

沙发
shell.albert| | 2010-10-30 20:31 | 只看该作者
肯定会的,如果是定时器中断为最高的话,Keil的关键字 interrupt 只是保证了进出中断时的现场保护,并不能保证不让中断嵌套! 所以一会在进入中断时 EA=0; 出来中断时EA=1,这样来操作.

使用特权

评论回复
板凳
DINGXIAOYU777| | 2010-10-30 21:57 | 只看该作者
TR0 = 0;关闭定时器
TR0 = 1;启动定时器
如果该定时器优先级最高
不会有意外使他不执行下去.
除非强干扰或复位

使用特权

评论回复
地板
eswei| | 2010-10-31 10:51 | 只看该作者
有可能有,在汇编语言里讲单片机内部结构的时候就有讲到过,单片机的中断分为可屏蔽中断和非屏蔽中断。这里的INTERRUPT只是可屏蔽中断。非可屏蔽中断CUP任何时候都要响应。

使用特权

评论回复
5
ayb_ice| | 2010-11-1 08:49 | 只看该作者
和TR0=0没有任何关系
也没有必要去关TR0
如果关掉.而没有地方恢复,以后就不会产生中断了

使用特权

评论回复
6
7120223|  楼主 | 2010-11-3 15:05 | 只看该作者
楼上 上面还有程序我没有写出,这个定时器我是用一端时间后要关闭的,只是TR0关闭之前我有个判断条件没有写出来,开启的地方我在主程序中有的。
同时单片机我还有用到串口中断的,串口中断必须常开的,所以无法关断EA

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

389

帖子

0

粉丝