Ⅰ 单片机外部中断有哪两种触发方式如何选择和设定
void
INT_System_init(void)
{
IT0
=
0;
/*
外部中断0,低电平触发中断
*/
//
IT0
=
1;
/*
外部中断0,下降沿触发中断
*/
EX0
=
1;
/*
允许外部中断0
中断
*/
IT1
=
0;
/*
外部中断1,低电平触发中断
*/
//
IT1
=
1;
/*
外部中断1,下降沿触发中断
*/
EX1
=
1;
/*
允许外部中断1
中断
*/
EA
=
1;
/*
开总中断控制位
*/
}一个是下降沿
一个是低电平
通过控制IT0
IT1来控制
Ⅱ 将单片机的外部中断1、定时器中断0打开,要求定时器0的中断优先级高于外部中断1,外部中断1采用边沿
关于中断的优先级有一下原则:
1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求,低优先的进入队列等待;
2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断;
3、正在进行的低优先级中断服务,能被高优先级中断请求中断;
那么,IP寄存器的某一中断配置为1就成为高优先级。每一个中断在IP里面只占一位配置位(IP.x=0或OP.x=1),也就是说系统里只存在两种优先级,要么是高优先级,要么是低优先级。
如果,任何中断都不配置IP寄存器的优先级,也等同于系统上电时,默认的优先级顺序如下:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
关于外部中断的寄存器已经了解清楚了,接下来看代码设计:
外部中断0(下降沿触发)
/*-----------------------------------------------
功能:外部中断0边沿触发
现象:首先将P3.2口通过上拉电阻接到电源,保证在空闲时P3.2处于高电平;
当外部中断信号输出口P3.2接到GND时,产生了一个下降沿信号,接到P0.0
口的LED灯反转;若此后P3.2持续接到GND,LED只反转一次,这与电平触发
有区别。
------------------------------------------------*/
#include
sbit LED=P0^0; //定义LED端口
void DelayMs(unsigned char t) //大致延时1mS
{
unsigned short T=500;
while(t--)
{
while(--T);
}
}
void INT0_init(void) //外部中断0初始化
{
LED=1; //LED口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=1; //边沿触发
}
main()
{
INT0_init();
while(1){
//主循环
}
}
//中断服务程序 interrupt 0 指明是外部中断0的中断函数
/*
interrupt 0 指明是外部中断0;
interrupt 1 指明是定时器中断0;
interrupt 2 指明是外部中断1;
interrupt 3 指明是定时器中断1;
interrupt 4 指明是串行口中断;
*/
void ISR_Key(void) interrupt 0 using 1
{
if(!INT0){
DelayMs(10); //防抖动
if(!INT0){
LED=!LED; //按下触发一次,LED取反一次
}
}
}
外部中断0(电平触发)
/*-----------------------------------------------
功能:外部中断0电平触发
现象:首先将P3.2口通过上拉电阻接到电源,保证在空闲时P3.2处于高电平;
当外部中断信号输出口P3.2接到GND时,产生了一个低电平信号,接到P0.0
口的LED灯反转;若此后P3.2持续接到GND,LED会反复反转,这与边沿触
发有区别。
------------------------------------------------*/
#include
sbit LED=P0^0; //定义LED端口
void DelayMs(unsigned char t) //大致延时1mS
{
unsigned short T=500;
while(t--)
{
while(--T);
}
}
void INT0_init(void) //外部中断0初始化
{
LED=1; //LED口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=0; //电平触发
}
main()
{
INT0_init();
while(1){
//主循环
}
}
//中断服务程序 interrupt 0 指明是外部中断0的中断函数
/*
interrupt 0 指明是外部中断0;
interrupt 1 指明是定时器中断0;
interrupt 2 指明是外部中断1;
interrupt 3 指明是定时器中断1;
interrupt 4 指明是串行口中断;
*/
void ISR_Key(void) interrupt 0 us
Ⅲ 什么是单片机的中断
不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。
计算机的中断系统能够加强CPU对多任务事件的处理能力。中断机制是现代计算机系统中的基础设施之一,它在系统中起着通信网络作用,以协调系统对各种外部事件的响应和处理。中断是实现多道程序设计的必要条件。 中断是CPU对系统发生的某个事件作出的一种反应。
引起中断的事件称为中断源。中断源向CPU提出处理的请求称为中断请求。发生中断时被打断程序的暂停点称为断点。
CPU暂停现行程序而转为响应中断请求的过程称为中断响应。处理中断源的程序称为中断处理程序。
CPU执行有关的中断处理程序称为中断处理。而返回断点的过程称为中断返回。中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分称为软件处理程序。
响应处理
大多数中断系统都具有如下几方面的操作,这些操作是按照中断的执行先后次序排列的。
1、 接收中断请求。
2、 查看本级中断屏蔽位,若该位为1则本级中断源参加优先权排队。
3、 中断优先权选择。
4、 处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中断的指令地址和处理机当前的主要状态信息存放在此单元中。
5、 中断部件根据中断级又指定另外的主存单元,从这些单元中取出处理机新的状态信息和该级中断控制程序的起始地址。
6、 执行中断控制程序和相应的中断服务程序。
7、 执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或转向其他程序。
冲突
在一些罕见的情况下,两个ISA设备可以共享相同的 IRQ,只要它们不同时使用即可。为了解决这个问题,后来的PCI 总线允许 IRQ 共享。PCI Express没有物理中断线,并使用消息信号中断(MSI) 到操作系统(如果可用)。
在早期的 IBM 兼容个人计算机中,中断曾经是一种常见的硬件错误,当两个设备尝试使用相同的中断请求(或 中断)向可编程中断控制器(PIC)发出中断信号时会收到该错误。
PIC 期望每条线路仅来自一个设备的中断请求,因此沿同一条线路发送中断信号的多个设备通常会导致 中断 冲突,从而导致计算机死机。
例如,如果在系统中添加调制解调器扩展卡并分配给中断4,传统上分配给串行端口1,则可能会导致中断冲突。最初,中断 7 是使用声卡的常见选择,但后来发现 中断 7 会干扰打印机端口(LPT1)时使用了中断5。该串行端口经常禁用可以用于其他设备的中断线。
中断 2/9 是 MPU-401 MIDI 端口的传统中断线,但这与ACPI系统控制中断(SCI 在 Intel 芯片组上硬连线到 中断9)冲突;
这意味着 ISAMPU-401带有硬连线中断2/9 的卡和带有硬编码 中断 2/9 的 MPU-401 设备驱动程序不能在启用 ACPI 的系统上以中断驱动模式使用。
以上内容参考网络-中断
Ⅳ 单片机外部中断
定时百器中断是设定定时时间,到了该时间,就进行处理一次。
可以处理按度键扫描,动态显示,时钟累加等问。
外部中断,是与外答接接触,当中断引脚为低电平时,进入中断。
如果你的单片机没内有专门的键盘中断,可以使用外部中容断来做键盘中断。定时百器中断是设定定时时间,到了该时间,就进行处理一次。
可以处理按度键扫描,动态显示,时钟累加等问。
外部中断,是与外答接接触,当中断引脚为低电平时,进入中断。
如果你的单片机没内有专门的键盘中断,可以使用外部中容断来做键盘中断。定时百器中断是设定定时时间,到了该时间,就进行处理一次。
可以处理按度键扫描,动态显示,时钟累加等问。
外部中断,是与外答接接触,当中断引脚为低电平时,进入中断。
如果你的单片机没内有专门的键盘中断,可以使用外部中容断来做键盘中断。
Ⅳ 若单片机响应了外中断1的中断请求,则在中断响应阶段,单片机要做哪些工作
答:单片机响应了外部中断1的中断请求,在允许中断的条件下,就会响应中断,要做的工作就是转向中断程序,完全中断需要完全的任务。
Ⅵ 单片机的内部中断和外部中断有什么区别
一、主体不同
1、内部中断:断是一个算法指令,是由软中断指令启动的中断。
2、外部中断:是单片机实时地处理外部事件的一种内部机制。
二、机制不同
1、内部中断:执行除法指令时,出现除数为0或商超过寄存器所能表达的范围,则产生类型为0 的内部中断。是优先级最高的内部中断。
2、外部中断:当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
三、特点不同
1、内部中断:由一条指令INT n产生中断类型码或者由指令规定,或者是预定的。不执行INTA总线周期,CPU也不发出响应信号INTA。
2、外部中断:在实时控制中,现场的各种参数、信息均随时问和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请。请求CPU及时处珲中断请求,如中断条件。
Ⅶ 51单片机外部中断1的中断矢量地址的作用
51单片机外部中断1的中断矢量地址是0013H,外部中断1触发中断后,由此地址进入中断,因为只有4个字节的空间大小,所以,一般这里放一条跳转指令。
Ⅷ 51单片机外部中断的触发方式
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
2) 边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
3) 中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
4) 选择电平触发还是边沿触发方式,TCON 控制寄存器
设置。应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。比如,有的书上说(《Keil C51使用技巧及实战》),就有类似的观点。
Ⅸ 51单片机外部中断1和外部中断0有什么区别
功能上没什么区别,外部中断0(P3.2),外部中断1(P3.3),只是中断标志有区别。优先级不同,在自然优先级中,外部中断0的优先级最高。不过可能优先级寄存器PX0、PX1去设置其高低的优先级。
Ⅹ mcs—51单片机外部中断1中断类型号
所谓的外部中断1中断类型号:
这是用C语言编程才有这个问题,而用汇编语言编程就没有这个问题了。
对于C语言编程,中断号是按这个顺序排列的,即用在interrupt 后面的类型号
外部中断0 ,是0号
定时器0 ,是1号
外部中断1,是2号
定时器1,是3号
串口UART,是4号
这是51单片机的。52单片机中断源还要多。