51单片机外部中断的触发方式
4个回答
展开全部
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
2) 边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
3) 中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
4) 选择电平触发还是边沿触发方式,TCON 控制寄存器
设置。应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。比如,有的书上说(《Keil C51使用技巧及实战》),就有类似的观点。
这个原理很好理解。但应用时需要特别注意的几点:
1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
2) 边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
3) 中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
4) 选择电平触发还是边沿触发方式,TCON 控制寄存器
设置。应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。比如,有的书上说(《Keil C51使用技巧及实战》),就有类似的观点。
展开全部
关于51单片机外部中断0触发方式,边沿触发方式和电平触发方式不同,边沿触发方式只在触发信号下降沿(现在有单片机也可以设置上升沿触发)触发一次。所以在设置好相关外部中断以后,等待触发就可以了,不需要额外处理。
IT0=1;//边沿触发方式,还要置位外部中断0允许位及总中断位进入外部中断0程序的方式是由外部中断触发信号控制的。//if(达到某条件)//不需要判断,否则就失去中断的意义了外部中断请求有两种方式:电平触发方式和脉冲下降沿触发方式。
在电平触发方式下,CPU在每个机器周期的S5P2时刻都要采样INT0\(P3.2)/INT1\(P3.3)管脚的输入电平,若采样到低电平,则认为是有中断请求,也即低电平有效。
在脉冲下降沿触发方式下,CPU也在每个机器周期的S5P2时刻采样INT0\(P3.2)/INT1\(P3.3)管脚的输入电平,若在相继的两次采样中,前一个机器周期采样信号为高电平,后一个机器周期采样到低电平,也即采样到一个下降沿,则认为是有效的中断请求信号。
外部中断请求信号方式的选择有其控制位(IT0\IT1)决定,在使用的时候要先设置。
IT0=1;//边沿触发方式,还要置位外部中断0允许位及总中断位进入外部中断0程序的方式是由外部中断触发信号控制的。//if(达到某条件)//不需要判断,否则就失去中断的意义了外部中断请求有两种方式:电平触发方式和脉冲下降沿触发方式。
在电平触发方式下,CPU在每个机器周期的S5P2时刻都要采样INT0\(P3.2)/INT1\(P3.3)管脚的输入电平,若采样到低电平,则认为是有中断请求,也即低电平有效。
在脉冲下降沿触发方式下,CPU也在每个机器周期的S5P2时刻采样INT0\(P3.2)/INT1\(P3.3)管脚的输入电平,若在相继的两次采样中,前一个机器周期采样信号为高电平,后一个机器周期采样到低电平,也即采样到一个下降沿,则认为是有效的中断请求信号。
外部中断请求信号方式的选择有其控制位(IT0\IT1)决定,在使用的时候要先设置。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有两种触发方式:低电平触发和下降沿触发。
低电平触发:当检测到外部引脚为低电平触发中断的为低电平触发。
下降沿触发:当检测到外部引脚由高电平变以低电平的瞬间时触发中断的为下降沿触发。
注意:选择低电平触发中断后,要撤去低电平信号,否则单片机不断检测引脚为低电平就会不断发生中断。而下降沿则不会。
低电平触发:当检测到外部引脚为低电平触发中断的为低电平触发。
下降沿触发:当检测到外部引脚由高电平变以低电平的瞬间时触发中断的为下降沿触发。
注意:选择低电平触发中断后,要撤去低电平信号,否则单片机不断检测引脚为低电平就会不断发生中断。而下降沿则不会。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有一种方法可以一试,当GATE=1时,只有当TRn=1和INTn=1时才开始计数,利用这点就可以间接检测到INTn高电平的来临,只是略微滞后一点点,就是你判断计数器的那些时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询