单片机中断程序
1、中断定义CPU在执行一个程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。
(如有必要,被中断的程序可以在后来某时间恢复,继续执行。
)事件:如读盘,盘有问题,无法读,产生中断,解决后,程序恢复,软件错误也会中断。
特点:1) 中断随机的2) 中断是可恢复的3) 中断是自动进行处理的2、中断系统的有关概念中断由软件(操作系统)、硬件协同完成,硬件机构称中断装置。
中断装置:指发现中断,响应中断的硬件。
中断处理程序是由软件来完成的。
以上合称中断系统中断源:引起中断发生的事件中断寄存器:硬件为每个中断源设置寄存器,中断发生时信息被记录在寄存器中,以便分析处理(记录中断)中断字:中断寄存器中的内容程序状态字:控制指令执行顺序,并保留和指示与程序相关的系统状态。
基本内容程序基本状态(指令地址,条件码,目态/管态,等待计算)中断码:保存程序执行时,当前发生的中断事件,以便操作系统分析处理(设置中断码)中断屏蔽位程序状态字寄存器(CPU按照其内容执行)系统堆栈:在内存开辟的一块区域用来临时保存进程运行现场
单片机中断可以介绍介绍吗???
什么是中断 中断是计算机中的一个十分重要的概念,在现代计算机中毫无例外地都要采用中断技术。
什么是中断呢?可以举一个日常生活中的例子来说明,假如你正在给朋友写信,电话铃响了。
这时,你放下手中的笔,去接电话。
通话完毕,再继续写信。
这个例子就表现了中断及其处理过程:电话铃声使你暂时中止当前的工作,而去处理更为急需处理的事情(接电话),把急需处理的事情处理完毕之后,再回头来继续原来的事情。
在这个例子中,电话铃声称为“中断请求”,你暂停写信去接电话叫作“中断响应”,接电话的过程就是“中断处理”,相应地,在计算机执行程序的过程中,由于出现某个特殊情况(或称为“事件”),使得CPU中止现行程序,而转去执行处理该事件的处理程序(俗称中断处理或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。
计算机为什么要采用中断 为了说明这个问题,再举一例子。
假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。
如果在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的工作去开门,这样就避免等待和浪费时间。
计算机也是一样,例如打印输出,CPU传送数据的速度高,而打印机打印的速度低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。
而采用了中断方式,CPU可以进行其它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。
这样就大大地提高了计算机系统的效率。
什么是中断的优先级 我们仍然可以举例说明中断优先级的概念。
在上面的例子中,如果在电话铃响的同时,门铃也响了,那么你将在“接电话”和“开门”这两个中断请求中选择,先响应哪一个请求。
这就有一个谁优先的问题。
如果“开门”比“接电话”重要(或者说“开门”比“接电话”的优先级高),那么就应该先开门,然后再接电话,接完电话后再回头来继续写信。
这就是说,当同时有多个中断请求时,应该先响应优先级较高的中断请求。
此外,如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而发出了中断请求,应该如何处理也取决于中断事件的优先级。
当新发生的中断事件的优先级高于正在处理的中断事件时,又将中止当前的中断处理程序,转去处理新发生的中断事件,处理完毕才返回原来的中断处理。
在上面的例子中,我们假设“开门”比“接电话”的优先级高。
在你写信时,电话铃响了,你去接电话,在通话的过程中,门铃又响了。
因为“开门”的优先级高,你只能让通话的对方稍等,放下电话去开门。
开门之后再回头继续接电话,通话完毕再回去继续写信。
而如果“开门”比“接电话”的优先级低,那么在通话的过程中门铃响了也可以不予理睬,通话结束再去开门。
当然,在日常生活中,谁也不会为“开门”和“接电话”规定一个优先级别的高低。
但是在计算机中,各种中断事件很多,其优先级都有规定,否则就会乱套。
在计算机中,中断事件的优先级是根据事件的实时性、重要性和软件处理的方便性来安排的。
中断的屏蔽 中断屏蔽也是一个十分重要的功能,所谓中断屏幕蔽是指通过设置相应的中断屏蔽位,禁止响应某个中断。
这样作的目的,是保证在执行一些重要的程序中不响应中断,以免造成迟缓而引起错误。
例如,在系统启动执行初始化程序时,就屏蔽键盘中断,使初始化程序能够顺利进行。
这时,敲任何键,都不会响应。
当然对于一些重要的中断是不能屏蔽的,例如重新启动、电源故障、内存出错、总线出错等影响整个系统工作的中断是不能屏蔽的。
因此,从中断是否可以被屏蔽来看,可分为可屏蔽中断和不可屏蔽中断两类。
中断源 凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为“中断源”。
通常中断源有以下几种: (1)外部设备请求中断。
一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。
由计算机硬件异常或故障引起的中断,也称为内部异常中断。
(2)故障强迫中断。
计算机在一些关键部位都设有故障自动检测装置。
如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。
(3)实时时钟请求中断。
在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。
需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。
(4)数据通道中断。
数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。
(5)程序自愿中断。
CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如...
单片机中断如何使用?
51单片机中断分外部中断和内部定时器中断,外部中断是指在接收到外部中断触发信号(中断管脚电平发生变化)后程序跑到对应的中断服务程序处执行,执行完毕后返回之前正在执行的地方继续;内部中断指由内部定时器触发的中断,比如定时器0设置为10ms定时,则每10ms进入中断服务程序一次。
...
中断是什么(51单片机)
1、中断定义CPU在执行一个程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。
(如有必要,被中断的程序可以在后来某时间恢复,继续执行。
)事件:如读盘,盘有问题,无法读,产生中断,解决后,程序恢复,软件错误也会中断。
特点:1) 中断随机的2) 中断是可恢复的3) 中断是自动进行处理的2、中断系统的有关概念中断由软件(操作系统)、硬件协同完成,硬件机构称中断装置。
中断装置:指发现中断,响应中断的硬件。
中断处理程序是由软件来完成的。
以上合称中断系统中断源:引起中断发生的事件中断寄存器:硬件为每个中断源设置寄存器,中断发生时信息被记录在寄存器中,以便分析处理(记录中断)中断字:中断寄存器中的内容程序状态字:控制指令执行顺序,并保留和指示与程序相关的系统状态。
基本内容程序基本状态(指令地址,条件码,目态/管态,等待计算)中断码:保存程序执行时,当前发生的中断事件,以便操作系统分析处理(设置中断码)中断屏蔽位程序状态字寄存器(CPU按照其内容执行)系统堆栈:在内存开辟的一块区域用来临时保存进程运行现场...
单片机中断系统的作用是什么?
#include sbit k1=P3^2;sbit led=P2^7;void delay_ms(unsigned int xms); //ms级延时子程序void key_scan(); //声明键盘扫描子函数//=================================================void main(){led=1; //上电初始化,led灯不亮while(1){key_scan();delay_ms(3000);}}//=================================================void delay_ms(unsigned int xms) //ms级延时子程序{ unsigned int x,y; for(x=xms;x>0;x--)for(y=130;y>0;y--);}//------------------------------------------------- void key_scan() //键盘扫描子函数{ if(k1==0) //有键按下吗?(k1=0 ?){ delay_ms(10); //延时消抖if(k1==0) //确实是有键按下,则:{led=!led; //翻转灯的状态while(!k1);} //等待按键放开} }//-------------------------------------------------
当at89s52单片机响应中断后,必须用软件清除的中断请求标志位是
这个你可以用函数进行调度,uCOS中任务与函数不同,就是差在函数没有调度系列。
你需要调度的时候,先关总中断,然后执行调度,然后开总中断就行了。
二一个,没有软件中断,难道还没有硬件中断吗,用硬件中断也一样,比如说定时器中断,我用一个定时器,需要调度的时候TH0 = 255;TL0 = 255;TR0 = 1;_nop_();这样,定时器0中断就被用作模拟软件中断了,像这样的可利用模拟软件中断的很多,看门狗之类的