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毫秒一到,执行第二次中断,,

51单片机的每个中断源有几个中断优先级?它们在进行中断请求是单片机如 ...
总的来说,51单片机的每个中断源都具有两个中断优先级,这样的设计使得中断的处理更加灵活和高效。通过合理地设置中断优先级和中断处理程序,可以确保单片机在面对多个中断请求时能够做出正确的响应,从而保障整个系统的正常运行。

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

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

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

51单片机中的定时器中断是怎么用的 ?
ET0=1;\/\/开定时器0中断 TR0=1;\/\/启动定时器0 while(1);\/\/程序停止在这里等待中断发生 } void T0_time() interrupt 1 { TMOD=0x01;\/\/重装初值 TH0=(65536-45872)\/256;num++;\/\/num每加一次判断一次是否到20次 if(num==20)\/\/如果到了20次,说明1秒时间到 { num=0;\/\/num清0重新...

51单片机中可以中断嵌套么?如果可以是如何规定的?
51单片机中可以实现中断嵌套。在51单片机中,中断嵌套是指在一个中断服务程序正在执行时,如果有另一个优先级更高的中断发生,系统会暂停当前中断的处理,转而响应更高优先级的中断,待其处理完后再返回继续处理之前的中断。这种机制使得单片机能够灵活应对多种中断事件,确保重要任务得到及时响应。51单片机...

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

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

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

什么是中断?80C51单片机的中断是什么?
Service Routine,ISR)或中断处理程序的特殊程序,处理完中断事件后再返回到原来的程序继续执行。中断可以提高系统的响应速度和效率,因为它允许CPU在等待外部事件(如输入\/输出操作完成)时执行其他任务。在80C51单片机中,中断是一种硬件机制,它允许单片机响应外部或内部的事件,如定时器溢出、外部输入信号变化...

相似回答