单片机的定时器中断问题?下面这个程序怎么调用中断的?定时器进入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);\/\/程序停止在这...

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

单片机中断问题,下面这段程序不知道为什么只进一次中断,就没有反应了...
这句是多余的 根本不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 DEL...

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

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

【 单片机定时器中断问题】
进入中断后,首先是系统硬件自动将TF标志位清零,如果TR没关,定时器继续工作,当再次溢出时,当然TF被硬件置1了,如果你的上次中断函数没有结束,就没法再进入本次中断处理,TF不能被置0,TR即使继续工作也,即使再溢出,也没有用了,因为TF还是1,只能等待cpu处理完上次中断内容,然后进入本次中断处理.一旦进入...

STC单片机定时器中断问题
while(1);} void time0() interrupt 1 \/\/定时器0 { TH0=0;TL0=0;\/\/重新装初值 P2--;} 以上程序中断会每隔65536us(如果你眼睛够快的话,但是以这个速度人眼应该感觉不到,你可以每隔20次中断再让P2自减一次,这样效果更好)发生一次,但是由于P2--;自减8次之后就会变成0x00,所以之后就看...

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

51单片机定时问题,为什么程序那儿要加一个while(1);
main函数中while(1)之前的代码是赋初值操作,是为中断调用使用的。之所以有while(1)是为了使得程序一直在运行,所以才有中断操作的不断执行,否则程序只运行一次就终止啦。

相似回答