请教两个问题:
书上说51
单片机响应中断的最短时间为3个机器周期,内部执行一个长调指令2个机器周期,加一个检测周期共3个机器周期。
如果中断检测时正在执行RE
ti或访问IE或IP指令的第一个机器周期,这样包括检测在内需要2个机器周期;紧接着若要执行的指令恰好是乘除指令,又需要4个机器周期;最后再用2个机器周期执行长调指令转入中断服务程序。这样,共需8个机器周期。所以单片机中断响应时间一般为3~8个机器周期。
1、为啥最短是3个周期?中断响应过程是,检测到中断后,单片机自动进行保护断点(压PC入栈),清内部中断标志,把响应的中断服务程序入口地址送入PC。我不清楚这些操作都是不需要花费额外的机器周期吗,虽然是自动执行?
2、说最长花费8个机器周期的地方,既然已经响应中断了,怎么还会去执行乘除指令呢?不是应该立刻去做问题1中提到的那些事情了吗?
这两个问题我百思不得其解,请大家指教,是不是我有什么地方理解错了。
RET这条指令拆开就是POP PC,LJMP PC。
响应中断是,当中断响应允许的情况下,查询到中断请求的那个周期的下一个机器周期去响应中断。但是在RET这条指令中中断响应是被禁止的,所以RET结束后的那个机器周期里还是不能进行中断响应,只能再次进行中断请求的查询。
你可以理解为执行RET指令等转移指令执行的时候EA=0;(我想应该执行jmp指令的时候也是不可以响应中断的)。。。
我今晚看书的时候也是不理解,上网查了半天也没有满意的答案。自己想了一下,看看对不对。
一周热门 更多>