51单片机外部中断0响应中断程序的时候IT0被硬件置0,要是再来一个中断信号不是就不能响应了吗

51单片机外部中断0响应中断程序的时候IT0被硬件置0,要是再来一个中断信号不是就不能响应了吗,第1张

此函数为外部中断1函数 ,函数名为it0(),interrupt后接中断号,0 代表外部中断1,1 代表定时器中断0,2 代表外部中断2,3代表定时器中断1,4 代表串口中断。using后接寄存器号 这个不需要了解,如果你不知道用哪个寄存器,直接把中断函数写为 void it0(void) intettupt 0 即可 ,单片机会自动选择空闲寄存器的。

1、设置TI=1,是人为的设置了串行发送请求完毕的中断请求标志。但是你并没有致能(es=1)串口中断。实际上你的interrupt5的处理程序也没有写,是空的。(注意这点)

2、你既然没有设置it0=1(跳变触发中断),那么就是IT0=0(低电平触发)。

3、当一个低电平来的时候,就进入你的interrupt0处理程序。并且硬件自动清标记位置。执行完毕 beer=1。

4、这个时候还有一个中断请求标志IT=1,于是产生了中断嵌套。执行完高级中断后,进入低级中断interrupt5。之后是空白。。。。

5、结果就是你描述的:蜂鸣器一直响,数码管停止显示。

不知道我这样描述,你能不能理解。呵呵

51单片机只是在进入中断服务程序的瞬间清除外中断标志,在执行中断服务程序过程中再次发生相同中断时,中断标志位被置1 但在执行RETI指令退出中断服务程序以前,再次发生的多少次相同的中断都不会被响应。而退出中断服务程序后,如果本中断仍被允许而又没有更高优先级中断,则会再次进入中断服务程序并清除中断标志位。

IT0是决定51单片机响应外中断的模式标志位,为0是低电平触发,为1是下降沿触发。而IE0才是外中断的请求标志位。

不是IO口,只是定时器控制寄存器TCON 里的一位而已,外部中断请求的触发方式,IT0=0时,代表你的外部中断0是低电平触发,IT0=1时,代表外部中断0是负跳变触发。 *** 作的时候,你只要写寄存器就行了。

INT0/1为1下降沿触发 为0电平触发 ,而下降沿触发IE0和IE1可以自动清零,而电平触发得人为把IE0和IE1清零,要不然会一直启动中断。IE0/1可以自动清零,所以一般用下降沿触发

如果你的IT0 = 0,即低电平触发,那么,究竟触发多少次,要看你的程序,如果你的外中断0的中断服务程序在最后一句没有加上while(P3_2 == 0);这句话,那么,具体触发了多少次,不好说,要看你的脉冲长度和中断服务程序的长度。

如果你加上while(P3_2 == 0);那就触发了一次。

void ISR_Exint0(void) interrupt 0

{

//中断处理函数

while(P3_2 == 0); //---如果没有这句话,且外中断又是低电平触发,那么,刚跳出中断,就又会进入中断。所以,一般情况,我都用边沿触发。

}

以上就是关于单片机 c 语言 实现中断中void it0(void) interrupt 0 using 1 后面买的interrupt 0 using 1什么意思全部的内容,包括:单片机 c 语言 实现中断中void it0(void) interrupt 0 using 1 后面买的interrupt 0 using 1什么意思、51单片机问题,想问一下IT0=1和TI=1有什么区别,尽量解释清楚一些,谢谢!!!、51单片机外部中断0响应中断程序的时候IT0被硬件置0,要是再来一个中断信号不是就不能响应了吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/8803961.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存