服务程序后,处理完后,是回到主程序吗?如果主程序中有延时函数,且比定时器的要长,当下次中断处理完后,回到主程序,从哪里开始执行?若在中断服务程序中加延时函数,且时间比定时器长,那么延时函数下面的程序不就不能执行了吗?那也进不了主程序了?
我认为执行中断服务程序后,是继续回到主程序中执行,这个可以理解。如果在中断服务程序中又有延时函数,并且比定时长,那么延时函数后的程序就永远不会执行,因为每次时间到,就重新执行中断服务程序。我想问下,执行中断服务程序,也保存中断服务程序中的pc值? 不是只保存主函数中的pc值吗?
追答首先,我说的pc就是主程序的pc值,然后,中断发生后产生中断请求,这个期间如果有个很长的延时我的确还不知道会不会继续计数,可以写个程序实验一下,毕竟动手得出的结论比看到的要深刻得多,当然办法是人想的,如果你只是想解决这个问题,你可以在进入中断的时候关闭中断计数,TRx=0就行,如果你想弄清楚其中的原理,网上可以搜索,自己可以写实验程序。最后,愿你成功。
若在中断服务程序中加延时函数,延时比定时器要长,那么每次进中断的时候,延时函数后的程序就不能执行了呀。每中断一次,不是执行一次服务程序吗?那延时后的程序就不能执行,因为每次延时还没完,就中断了。
追答你说的是两个中断吗?
如果是, 他们之间有优先级的, 优先级高的先执行, 执行完了还是会返回原来的程序中运行的
不是,就是在中断服务程序中有一个大于定时时间,的延时函数,延时函数后面还有程序,那么延时还没完,就又一次重新执行中断服务程序了,因为时间到执行中断服务程序,那么延时函数后面的程序,就永远不会执行了。
追答中断没退出, 是不可能再次进中断的, 除非有更高优先级中断产生
一般中断服务程序尽量简短, 不然实时性会比较差