中断是如何告知CPU去执行哪个中断函数的 5
3个回答
展开全部
对于CPU内部中断源的请求,可直接转入中断周期,由内部硬件自动执行预定的操作。
对于CPU外部中断源的请求,通常必须满足以下条件才能响应。
置位了中断请求触发器。每个中断源对应有一个中断请求触发器,通过它发出并保持中断请求信号,直至CPU响应后才被清除。
中断屏蔽触发器处于非屏蔽状态。在有多中断源的实际系统中,为了增加控制的灵活性,常在每个中断源的接口中设置一个中断屏蔽触发器,只有当此触发器处于非屏蔽状态时,中断请求才能被送至CPU,否则将被屏蔽掉。
CPU内部是中断开放的。在CPU内部有一个中断允许触发器(IF),只有当它为“1”(即中断开放)时,CPU才能响应外部中断;否则中断被关闭,即使INTR上有中断请求,CPU也不响应。中断允许触发器的状态通常由STI和CLI指令来改变(置“1”或清“0”)。
当CPU复位时,中断允许触发器被清“0”,即关中断,所以必须用STI指令才能开中断;每当中断响应后,CPU又会自动关中断,所以必须在中断服务程序中用STI指令来开中断,以便执行中断服务程序时能响应更高优先级的中断请求,中断服务程序结束后能响应新的中断请求。
展开全部
中断发生时,比如外部中断,会通过8259芯片给CPU 一个电信号, 并将中断号放入到指定的寄存器, cpu 执行完当前指令之后会检查是否有中断发生,如果发现CPU中断引脚出现高位电平,则获取对于寄存器的中断号, 并根据该中断号查询中断向量表获取中断服务地址(中断向量表的入口是体系结构定死的+0000 入口地址+中断号 就可以获取中断服务入口地址),然后开始执行中断服务程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是中断告知CPU去执行哪个中断函数。是写程序时设置CPU去检测是那个中断发的中断信号,(如外部中断,定时器内部中断),当CPU检测到中断信号,CPU转向执行你预先设定的某个函数。
追问
你说的写程序时设置CPU去检测是那个中断发的中断信号,这不就是轮询的方式吗?CPU会不断的查询有没有事件发生。但是我现在问的是中断的方式,当串口有数据到来的时候,即发生了串口中断,CPU怎么知道去执行串口的中断程序?是如何触发的CPU去执行串口中断函数?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询