单片机的定时器中断问题?下面这个程序怎么调用中断的?定时器进入while循环后不是出不来了么?

#include<reg51.h>
#define LED=P1^0;
unsigned char k;
void main()
{
EA=1;
ET0=1;
TMOD=0X01;
TH0=(65536-50000)%256 ;
TL0=(65536-50000)/256 ;
TR0=1;
while(1)
{
if(k==20)
{
k=0;
LED=~LED;

}

}
}
void yi_s () interrupt 1
{
TH0=(65536-50000)%256 ;
TL0=(65536-50000)/256 ;
k++;
}

定时器由硬件自动在计时,你初始化定时时间后,TR0 = 1就启动了定时器开始计数,计时到了就向cpu请求中断,cpu响应的话就跳转到中断函数即你写的void yi_s () 函数,执行完了就返回。

简单来说就是中断函数是有单片机硬件来完成调用的,只要中断条件满足了就会调用,interrupt 1就是告诉单片机这个函数是个中断响应子函数,并且对应的中断向量1,就是定时器0
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-29
中断的含义是你只要在主程序中将它启动了,它就会在那跑,是硬件技术,是同时发生的,并不是顺序下来的,明白了吗?
第2个回答  2013-05-29
中断时间单独运行的 定时时间一到就执行中断程序。
第3个回答  2013-05-29
静等更好的解释~

单片机中的中断问题,
过程是这样的:程序一直在while(1)里面,直到定时器计满产生中断;产生中断后,执行中断服务程序,定时器重新赋值,tt自加1;回到while(1),等待下一次中断,定时器继续计数;定时器产生中断,...反复20次,P10取反。所以你的问题:1.中断函数是只执行一次吗 不是,每次执行完之后,由于中断未关,...

51单片机中的定时器中断是怎么用的 ?
代码如下:\/\/实现led灯一秒亮灭闪烁 void main(){ TMOD=0x01;\/\/设置定时器0为工作方式1(M1 M0为01)TH0=(65536-45872)\/256;\/\/装初值11.0582晶振定时50ms数为45872 TL0=(65536-45872)%256;EA=1;\/\/开总中断 ET0=1;\/\/开定时器0中断 TR0=1;\/\/启动定时器0 while(1);\/\/程序停止在这...

51单片机定时器中断问题
定时器是一直在执行的,不论是否中断,它是对节拍的计数,由单独硬件实现。单片机在中断程序中,如果中断程序比较长,定时器的计数值是会改变的,一般是先读高位计数值,再读低位计数值,然后再读一次高位计数值,防止在读的过程中,低位向高位进位。

单片机的定时器中断问题,希望大神帮我解答我的问题。我不太懂中断的条 ...
启动定时器,主程序就 可以等待了,时间到自动进入中断程序,中断程序完成后又回到 主程序 但主程序仍是空等待 ET0=1是使能中断,并且要开总中断,这是必须的,所有中断都 要使能才能用 一般先使能中断再开定时器,但有时晚一步使能中断关系也不大,定时时间不会那么短 ...

单片机定时中断的问题
标志位在子程序中已被改变,现在就可能出错了。所以在进入中断子程序时要首先把这些标志位(即ACC和PSW)保存起来即PUSH ACC和PUSH PSW,子程序结束时释放:POP PSW和POP ACC,以便回到主程序时能正确的继续运行。如果用不到这些,也可以不操作,但是建议你最好进行保护,这样不容易出错的。

单片机中断问题,下面这段程序不知道为什么只进一次中断,就没有反应了...
这句是多余的 根本不m会执行 INT_0: PUSH ACC ;由于p中1断中1A被设为10所以5中7断返回后对A移位没有意义o A一e直为10 ,并不d是只 能中4断一i次 MOV A,#0FFH MOV P0,A LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY MOV A,#00H MOV P0,A LCALL DELAY LCALL DELAY LCALL ...

单片机定时器中断可以写在while循环下面吗
中断处理不要写在while里,可以中断处理中设置一个标志位,中断处理中,标志位置位,在while里读标志位就行,处理完后标志位清楚,等待下一次中断置位

...1.当定时器的中断发生时,cpu进入定时器中断服务函数执行代码,刚好...
当定时器的中断发生时,cpu进入定时器中断服务函数执行代码,刚好这个时候外部中断触发了,外部中断的优先级高于定时器中断,cpu直接去外部中断服务函数执行代码。在执行外部中断服务函数代码时,定时器是还在继续计数,还是停止计数?--停止、还是继续计数,仅仅受到 TR0(或TR1) 的控制。--和出现什么中断...

51单片机定时器中断基础(超级超级简单详细实用)
定时器\/计数器控制寄存器)中的TR0。启动定时器后,需要调用中断服务程序,如void T0_time() interrupt 1,其中包含重置初值和可能的其他操作。中断服务程序的结构通常是void函数名() interrupt 中断号,其中函数名不能与关键字冲突。在上述T0_time函数中,每50ms会重置初值并执行需要的程序代码。

单片机中关于中断的问题
你的理解没有错,中断是在你的主程序开始运行时同时进行的,并且定时器、计数器或者是外部中断都是独立工作的,当定时器溢出时,TF由硬件自动置1,并且向cpu发送中断请求,当cpu响应中断时,TF又由硬件自动清0.。并且不管定时器溢不溢出,它都会不断计数,因此在响应完中断程序时,需要对定时器重新装...

相似回答