五个中断有指定的IO口,一般51单片机是P32是INT0,P33是INT1,P34是T0,P35是T1,INT0和INT1是外部中断,T0和T1是定时器,ES是串行口中断允许位,ET1是定时器1中断允许位,EX1是外部中断允许位,ET0和EX0类似。
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置两个触发寄存器,同时在中断屏蔽寄存器的相应位写1允许中断请求。
当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置l。在挂起寄存器的对应位写1,将清除该中断请求。
如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置两个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求。
当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置1。通过在软件中断/事件寄存器写1,也可以通过软件产生中断/事件请求。
扩展资料:
电平触发方式
若外部中断定义为电平触发方式,外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平变化而变化,这能提高CPU对外部中断请求的响应速度。
当外部中断源被设定为电平触发方式时,在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。所以电平触发方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断请求源(即外部中断输入电平又变为高电平)的情况。
跳沿触发方式
外部中断若定义为跳沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变。即便是CPU暂时不能响应,中断申请标志也不会丢失。
在这种方式里,如果相继连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置“1”中断申请触发器,直到CPU响应此中断时才清’0’。
这样不会丢失中断,但输入的负脉冲宽度至少保持12个时钟周期(若晶振频率为6MHz,则为21xs),才能被CPU采样到。外部中断的跳沿触发方式适合于以负脉冲形式输入的外部中断请求。
参考资料来源:百度百科——外部中断
参考资料来源:百度百科——51单片机
呵呵,前面几位网友,回答都是错的。
网友说:
外部中断0优先级高于外部中断1
同优先级情况下,外部中断0还是会比的外部中断1更优先;
都是不对的。
。
你没有设置中断短优先级,那么,它们,就都是低级的。
要想嵌套,必须有高、低两个级别。
同样的优先级,是不能出现中断嵌套的。
只有高级的,才能中断低级的。
外部中断0设置为低电平触发,去掉while循环后一直按下按键实际代码为
delay();
P1=0xfe;
delay();
EX0=0;
P1=_crol_(P1,1);
delay();
EX0=1;
P1=0X00;
一直重复
之前的代码进入中断后会一直循环,并不会退出中断。正确做法中断应该改为:
void
tx0()
interrupt
0
using
0
{
unsigned
char
i;
delay();
P1=0xfe;
delay();
EX0=0;
while(1)
{
P1=_crol_(P1,1);
delay();
if(P3&0x04)
//判断是否松开中断0的按键
{
break;
}
}
EX0=1;
P1=0X00;
}
以上就是关于51单片机外部中断是哪几个管脚全部的内容,包括:51单片机外部中断是哪几个管脚、51单片机外部中断0为何不能打断外部中断1、单片机C51外部中断程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)