关于在51定时器中断语句中关闭中断的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在51定时器中断语句中关闭中断的问题相关的知识,希望对你有一定的参考价值。

最近在看51的一个程序,发现一个程序不太明白,个人没见过这样的中断,中断程序如下:

void timer0_IT(void) interrupt1 /*定时器0中断*/


TR0=0;

TH0=0x00; /*init values*/

TL0=0x00;

TR0=1; /*timer0 run*/

timer0_counter++;

if(timer0_counter>25)


//ET=0;

Uploading_Data=0;

Mdata=1;

timer0_counter=0;





现在不明白的是,当定时器溢出的时候在这里面关闭定时器中断会马上停止这个中断吗?TR0=0后面的程序还执行不执行?先TR0=0后TR0=1有什么作用?

当定时器溢出的时候,中断标志位TF0置1,cpu会产生中断,接着程序跳转去执行中断服务程序void timer0_IT(void) interrupt1,同时中断标志位TF0自动置0,cpu不会再产生中断,接着执行void timer0_IT(void) interrupt1函数里面的语句,直到定时器再次溢出才会产生中断。

在执行中断服务程序时要关闭定时器,防止溢出,执行完后再打开定时器,让其溢出产生中断。
参考技术A TR0=0后面的程序还可以执行

以上是关于关于在51定时器中断语句中关闭中断的问题的主要内容,如果未能解决你的问题,请参考以下文章

51单片机:开启中断和定时器

单片机怎么清中断标志位

请问单片机定时器中断是怎么样的过程啊

将单片机的外部中断1、定时器中断0打开,要求定时器0的中断优先级高于外部中断1,外部中断1采用边沿?

51单片机定时器中断

求51单片机中,用C语言写的五个中断源的中断函数的书写规则,就是进入中断函数时的那个函数名,并说明...