51单片机中的中断程序到底是怎么运行的?

哪位大神帮忙解释下这个到底怎么具体的运行过程
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;ET0=1;TR0=1;

wela=1;P0=0xc0;wela=0;
dula=1;P0=0x3f;dula=0;

while(1)
{
if(t==20)
{ num++;t=0;
if(num==16)
num=0;
dula=1;
P0=table[num];
dula=0;
}
}
}

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

求解。while之后不是就已经进入一个死循环了吗,为什么数码管还是会闪呀
(table【】前的表省了)

你的问题是没理解中断的含义。
中断,字面上意思就是(当有更紧急的事情出现的时候)终止现在手头上的事情去忙更紧急的事情。在程序里,就相当于当某个条件成立时,停止正在运行的代码(手头上的事情),去执行另一段代码(更紧急的事情),只是这个过程是硬件自动完成的,而不是像你平时调用函数那样显式的去调用它。
你的程序里用到了定时器0(自己去看定时器的工作原理),那你只要将定时器0初始化,并且在函数void exter() interrupt 1里写下你希望当定时器0中断的时候执行的代码就行了。当你启动定时器0的时候,它有点像后台运行的一个程序,当它归0的时候,就会置相应的中断标志为1,而CPU会不时的检测这些中断标志位,当发现某个标志位为1的时候,表明有中断请求,CPU会自动转到相应的中断服务程序中去。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-24
51单片机中断分外部中断和内部定时器中断,外部中断是指在接收到外部中断触发信号(中断管脚电平发生变化)后程序跑到对应的中断服务程序处执行,执行完毕后返回之前正在执行的地方继续;内部中断指由内部定时器触发的中断,比如定时器0设置为10ms定时,则每10ms进入中断服务程序一次。
第2个回答  2013-01-21
开启中断后程序在中断产生后会自动的跳转到相应的中断函数里,所以你的灯闪了,

main里while(1){}中是常规任务,中断是意外事件或者未知又会产生的事件。

你比如你正在睡觉,有人打你的电话这时候你会醒来去接电话,接玩电话继续睡觉。

程序也就这么回事,只不过你是大脑在控制,而程序是MCU在控制。
第3个回答  推荐于2017-10-02
死循环不是单片机死机了,而是一直在这个循环里工作。它的定时器也一直在工作过程中,从你的程序看,你的显示虽然闪,但是数字是不变的,你少了一个{}应为
if(t==20)
{ num++;t=0;
if(num==16)
{num=0;
dula=1;
P0=table[num];
dula=0;
}
}本回答被提问者采纳
第4个回答  2013-02-15
其实是中断返回,当第一次中断完成,数码管就由原先的0变为1,然后程序就回到了while那里,也就是断点,然后等待下一次的中断请求,也就是50毫秒,50毫秒一到,执行第二次中断,,

单片机中断是什么?
在80C51单片机中,中断是实现实时处理和多任务操作的重要手段。当单片机正在执行主程序时,如果外部或内部发生某一事件(如定时器溢出、外部信号输入等),单片机可以暂停当前主程序的执行,转而响应这一事件,即执行相应的中断服务程序。这一过程被称为中断响应。80C51单片机有五个中断源,分别是两个外部中断...

MCS-51的中断问题
51单片机的中断响应的大概过程:1.发现中断请求,一般情况本条指令完成后的下一机器周期开始响应。2.响应开始,先由硬件自动把当前程序指针PC入栈(保护起来)。3.然后把中断入口地址(各中断入口地址固定)装入程序指针PC,也是由硬件自动完成,至此中断响应结束。4.程序转入中断服务程序,先进行现场保护,...

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单片机定时器中断基础(超级超级简单详细实用)
中断是单片机设计中的一种机制,它允许CPU在处理突发任务时能暂时中止当前任务,优先应对外部或内部事件。这就像你在洗衣服时接到快递电话,会暂时放下手头的工作去取件,然后再回到原来的任务。51单片机共有五个中断源,每个中断源代表着一种可能的中断事件。使用定时器0中断是中断应用的一个实例,以工作...

51单片机 中断系统
而且你的程序设置了IT0=0,说明是下降沿触发中断,也就是当单片机检测到INT0引脚从1变到0的一瞬间触发一次interrupt 0中断。所以理论上你按一下K3,ISR_KEY这个函数就被执行了一次,LED0就会变成相反的状态,亮或灭。但是为什么没有规律呢?原因是程序没有消除按键的机械抖动。按键由于是机械的,按下...

单片机中断响应程序从哪里开始
详细解释:1. 什么是中断向量表:在单片机中,中断向量表是一个预先定义好的地址区域,它存储了中断服务程序的入口地址。当单片机响应中断时,它会根据中断类型,跳转到中断向量表对应的地址,从那里开始执行中断服务程序。2. 中断响应流程:当单片机的一个外部或内部事件触发中断时,单片机会暂停当前的主...

51单片机定时器0的中断响应过程
8051单片机有5个中断源和两个中断优先级,高优先级的中断源可以中断低优先级的服务程序,反之不行。INT0>T0>INT1>T1>串口中断。8051没有专门的开中断和关中断的指令,中断的开放和关闭是由特殊功能寄存器IE来实现两级控制的。有个总开关EA,然后又有ES,ET1,EX1,ET0,EX0五个开关。为1表示开,为0...

51单片机中什么是中断?其作用是什么?怎么用?用自己的理解回答把
以51单片机16位定时计数器0(T0)来讲,计数是T1是一个能盛65536(十六位时)滴水的水盆,在水龙头下水一滴滴地滴入盆中。如果盆是空的那水在滴完65536滴水时盆子的水就满了再滴一滴的时候就溢出了。这时就会产生中断。如果盆里面已经装入65500滴水(即初装值),那么只需要36滴水后就溢出了。每一...

51单片机的中断是什么意思?
51单片机的IT0位是控制外部中断0的触发方式的。外部中断0触发方式控制位,1表示边沿触发,0表示电平触发。如果IT0设置为0,则外部中断0引脚被拉至低电平即可引发外部中断。如果IT0设置为1,则外部中断0引脚需要检测到下降沿才能引发外部中断。EX0是外部中断0的使能控制位,如果EX0设置为0,则外部中断0...

C语言中,51单片机怎么将进入外部中断服务程序,
51单片机的外部中断主要分为两种触发方式。首先,我们有外部中断0(IT0,TCON.0),这是一个中断触发方式控制位。当IT0值设置为0时,意味着中断是电平触发方式;而当其值设为1时,则表示中断为边沿触发方式,其中下降沿有效。在进行51单片机的外部中断初始化时,我们首先需要开启中断源。对于外部中断0...

相似回答